我有一个JSP / Servlet应用程序,其中包含一个包含多个部分的表单。
客户方:
out.println("<form action='cbehindRegister_submit.php' method='post'enctype=\"multipart/form-data\">");
out.println("<table>");
out.println("<tbody>");
out.println("<tr>");
out.println("<td><label>Username: </label></td>");
out.println("<td><input type='text' required id='input_username' name='input_username'/></td>");
out.println("<td><label id='valusername' class='val'> </label></td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td><label>Country: </label></td>");
out.println("<td><input type='text' required id='input_country' name='input_country'/></td>");
out.println("<td><label id='valcountry' class='val'> </label></td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td><label>Profile picture: </label></td>");
out.println("<td><input type='file' required id='input_profile_picture' name='input_profile_picture' accept='image/x-png,image/gif,image/jpeg' /></td>");
out.println("<td><label id='valprofile_picture' class='val'> </label></td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td><label>Birth date: </label></td>");
out.println("<td><input type='date' required id='input_birth_date' name='input_birth_date' /></td>");
out.println("<td><label id='valbrith_date' class='val'> </label></td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td><label>Password: </label></td>");
out.println("<td><input type='password' required id='input_password' name='input_password' /></td>");
out.println("<td><label id='valpassword' class='val'> </label></td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td><label>Verify password: </label></td>");
out.println("<td><input type='password' required id='input_verifypassword' name='input_verifypassword' /></td>");
out.println("<td><label id='valverifypassword' class='val' > </label></td>");
out.println("</tr>");
//request
out.println("<tr>");
out.println("<td height='45px' colspan='3'><input type='submit' id='submit' value='Registreer' id='regsubmit' /></td>");
out.println("</tr>");
out.println("</tbody>");
out.println("</table>");
out.println("</form>");
问题是如何将文件作为字节数组上传,以便将其作为blob存储在数据库中?
无论如何以相似的方式获取文件 如
File file = request.getParameter("nameOfFormParameter");
或
byte[] image = request.getParameter("nameOfFormParameter");
互联网上的大多数指南都是用来存储服务器上的文件。
编辑1:与文件上传相关的大多数问题都提供了一种解决方案,可以将文件存储在磁盘上,而不会处理内存中的文件。这个问题的目的是找到一个解决方案,在内存中处理上传的文件而不将文件直接写入磁盘,但将它们存储在数据库中。
答案 0 :(得分:0)
搜索了大约2天后,我终于找到了答案:
<强>首先强>
在表单标记中添加enctype = \“multipart / form-data \,以便结果为:
<form action='cbehindRegister_submit.php' method='post'enctype=\"multipart/form-data\">
其次
使用以下代码行接收文件(确保表单的输入标记的名称与getPart函数中的字符串相同):
Part filePart = request.getPart("input_profile_picture");
第三
从filePart创建输入流并将输入流转换为字节数组
InputStream filecontent = filePart.getInputStream();
byte[] fileAsByteArray = IOUtils.toByteArray(filecontent);
现在,图像已经准备好了!