java文件上传

一:

上传文件需要满足以下条件:

1、enctype="multipart/form-data" 方法为post。

2:servlet需要注解:@MultipartConfig。

3:<input name="f" type="file"> file类型的input标签。

4:servlet通过part获取上传流,通过String name=part.getHeader("Content-Disposition")来获取文件名字。

5:通过commons.io来进行文件拷贝。

代码:

前端:

 1 <html>
 2   <head>
 3     <title>$Title$</title>
 4   </head>
 5   <body>
 6   <form action="/upload"  method="post" enctype="multipart/form-data">
 7     姓名:<input   name="username"><br>
 8     picture:<input name="f" type="file"><br>
 9     <input type="submit"><br>
10 
11   </form>
12   </body>
13 </html>

后端:

 1 package jd.com.upload;
 2 
 3 
 4 
 5 import org.apache.commons.io.IOUtils;
 6 
 7 import javax.servlet.ServletException;
 8 import javax.servlet.annotation.MultipartConfig;
 9 import javax.servlet.annotation.WebServlet;
10 import javax.servlet.http.HttpServlet;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13 import javax.servlet.http.Part;
14 import java.io.FileOutputStream;
15 import java.io.IOException;
16 import java.io.InputStream;
17 import java.io.OutputStream;
18 
19 @WebServlet(name = "ServletUpload",urlPatterns = "/upload")
20 @MultipartConfig
21 public class ServletUpload extends HttpServlet {
22     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
23         request.setCharacterEncoding("utf-8");
24         String username=request.getParameter("username");
25         System.out.println(username);
26         Part part=request.getPart("f");
27         String name=part.getHeader("Content-Disposition");
28         //获取文件名字
29         name=name.substring(name.indexOf("filename")+10,name.length()-1);
30         System.out.println(name);
31         InputStream inp=part.getInputStream();
32         System.out.println(inp);
33         OutputStream outp=new FileOutputStream("D:\upload\"+name);
34         //文件IO流拷贝。
35         IOUtils.copy(inp,outp);
36         inp.close();
37         outp.close();
38 
39     }
40 
41     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
42 
43     }
44 }

 其中在post过程中:Content-Disposition字段对应有上传文件名字。

原文地址:https://www.cnblogs.com/evilliu/p/8709602.html