【问题标题】:How to fetch image name and another input field values at the same time from form into servlet [duplicate]如何从表单同时获取图像名称和另一个输入字段值到servlet [重复]
【发布时间】:2015-06-19 14:58:48
【问题描述】:

我正在使用 jsp 和 servlet 上传图像。我正在使用 enctype=multipart/form-data。但我无法将输入字段值提取到 servlet。

这是我的jsp代码

<form method="post" action="uploadImage" enctype="multipart/form-data">
        <p>Select file to upload:</p>
        <input type="file" name="file" >
        <input type="text" name="name" >
        <br><br>
        <input type="submit" value="Upload" >
    </form>

这是我的 sevlet 代码

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
           response.setContentType("text/html;charset=UTF-8");
    HttpSession sess=request.getSession();
    PrintWriter out = response.getWriter();
int i=0;
    String u_id=(String) sess.getAttribute("uid");
    String saveFile="";
String contentType = request.getContentType();
if((contentType != null)&&(contentType.indexOf("multipart/form-data") >= 0)){
DataInputStream in = new DataInputStream(request.getInputStream());
int formDataLength = request.getContentLength();
byte dataBytes[] = new byte[formDataLength];
int byteRead = 0;
int totalBytesRead = 0;
while(totalBytesRead < formDataLength){
byteRead = in.read(dataBytes, totalBytesRead,formDataLength);
totalBytesRead += byteRead;
}

saveFile = file.substring(file.indexOf("filename=\"") + 10);
saveFile = saveFile.substring(0, saveFile.indexOf("\n"));

saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,saveFile.indexOf("\""));

String boundary = contentType.substring(lastIndex + 1,contentType.length());
int pos;
pos = file.indexOf("filename=\"");
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
int boundaryLocation = file.indexOf(boundary, pos) - 4;
int startPos = ((file.substring(0, pos)).getBytes()).length;

File ff = new File("D:/images/"+saveFile);
FileOutputStream fileOut = new FileOutputStream(ff);
fileOut.write(dataBytes, startPos, (endPos - startPos));
fileOut.flush();
fileOut.close();
try{
Connection con;
PreparedStatement ps,ps1;
ResultSet rs;
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dfmc","root","93Pb3gaNv0");
String sql="insert into profilepic_table(uid, image_name) values('"+u_id+"','"+ff.getName()+"')";
ps=con.prepareStatement(sql);
ps.executeUpdate();
}
}catch(Exception e){
e.printStackTrace();
}
}

我还想选择多个文件并上传它们。

【问题讨论】:

  • 请将 roseindia.net 添加到您的 Internet 黑名单。永远不要永远不要使用那一侧。它只会让你陷入糟糕代码和糟糕实践的恶性循环。

标签: java javascript mysql jsp servlets


【解决方案1】:

在定义 Servlet 之前添加以下代码行,以处理 multipart/form-data 提交,您必须使用 Multipart 注释

@MultipartConfig(fileSizeThreshold = 1024 * 1024 * 2, // 2MB
    maxFileSize = 1024 * 1024 * 10, // 10MB
    maxRequestSize = 1024 * 1024 * 50)

public class ServletName extends HttpServlet { ... }

另外,导入javax.servlet.annotation.MultipartConfig;

【讨论】:

  • 不工作兄弟...错误! java.lang.RuntimeException:无法编译的源代码 - 找不到符号符号:类 MultipartConfig
  • 添加@WebServlet("/ServletName")并导入javax.servlet.annotation.WebServlet;后试试
  • 之后显示此错误 ...java.lang.StringIndexOutOfBoundsException: String index out of range: -1
  • java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1 java.lang.String.substring(String.java:1954)uploadImage2.processRequest(uploadImage2.java:86)uploadImage2.doPost( uploadImage2.java:255) javax.servlet.http.HttpServlet.service(HttpServlet.java:644) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.tomcat.websocket.server.WsFilter。 doFilter(WsFilter.java:52) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
  • 调试你的代码并检查变量 file 是否有一些价值。它是抛出错误的任何一条线。 saveFile = file.substring(file.indexOf("filename=\"") + 10);saveFile = saveFile.substring(0, saveFile.indexOf("\n"));saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,saveFile.indexOf("\""));
猜你喜欢
  • 2018-12-25
  • 1970-01-01
  • 2020-03-08
  • 2013-03-04
  • 2011-08-04
  • 1970-01-01
  • 2012-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多