作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
JSP
<form action="AddCategoryServlet" id="AddCategoryForm" target="_self" method="post">
<table>
<tr>
<td> <div align="center" class="group">
<input type="text" id="CName" name="texCname" required />
<span class="highlight"></span>
<span class="bar"></span>
<label id="CNamecheck">Category Name</label>
</div>
</tr>
<tr>
<td> <div align="center" class="group">
<input type="text" id="CDescript" name="texCdescript" required />
<span class="highlight"></span>
<span class="bar"></span>
<label id="CDescriptcheck">Category Description</label>
</div>
</tr>
<tr>
<td> <div align="center" class="group">
<input type="text" id="CImage" name="texCImage" required/>
<span class="highlight"></span>
<span class="bar"></span>
<label id="CImagecheck">File Path</label>
<input style="display:none;" type="file" id="file" name="file"/>
<input style="position:absolute;top:10px;left:315px;font-size:10px;" type="button" value="Choose Image" id="uploadbutton" class="myButton" />
</div>
</tr>
</table>
<input type="submit" value="Add Category" class="myButton" />
</form>
单击时选择图像按钮会使用 jquery 触发输入类型=文件的单击事件:
$("#uploadbutton").click(function(){
$("#file").click();
});
我用于将文件放入数据库的 servlet 是 -:
try
{
String Name,Description=null;
Name=request.getParameter("texCname");
Description=request.getParameter("texCdescript");
InputStream inputStream= null;
Part filePart= null;
filePart= request.getPart("file");
if (filePart != null)
{
System.out.println(filePart.getName());
System.out.println(filePart.getSize());
System.out.println(filePart.getContentType());
inputStream = filePart.getInputStream();
}
Connection con= BaseDAO.getConnection();
PreparedStatement pst = con.prepareStatement("INSERT INTO CATEGORY(Category_Name, Image, Description) VALUES (?,?,?)");
pst.setString(1,Name);
pst.setBlob(2,inputStream);
pst.setString(3,Description);
pst.executeUpdate();
}
catch(ClassNotFoundException | SQLException e)
{
e.printStackTrace();
}
我收到“图像”列不能为空的错误。经过调试,我发现变量 filePart 的值为 null,即它没有从 jsp 接收 name="file"的参数。有人可以指出我错在哪里吗?
最佳答案
您无法以单一形式一次处理文本和输入类型文件等纯输入类型,您需要特殊的库来处理此类请求。
您需要在表单中编写enctype="multipart/form-data"
,
<form action="AddCategoryServlet" id="AddCategoryForm" target="_self" method="post" enctype="multipart/form-data" >
........
</form>
但是,请注意,通过编写 enctype="multipart/form-data"
您将无法处理纯输入,即 input type="text"
因此,如果您想要一种简单的方法,请在发送图像时创建 2 个单独的表单,其中包含 enctype="multipart/form-data"
以及您在问题中指定的仅包含文本数据的表单.
关于jquery - 使用jsp、servlet将图像上传到mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30823428/
我是一名优秀的程序员,十分优秀!