前端html: <form action="upload" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="Submit" /> </form> 后端java: import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import javax.servlet.http.Part; import javax.servlet.annotation.MultipartConfig; @WebServlet("/upload") @MultipartConfig //使用Servlet3的上传组件 public class upload extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); //设置请求文档编码,上传文件名出现乱码就需要设置这个值 Part part = request.getPart("file"); //获取html上传对象<input type="file" /> String fname = part.getSubmittedFileName(); //获取上传文件名称,带后缀 String fpath = request.getRealPath(File.separator+ "sj" +File.separator+ fname); //设置保存文件路径,绝对 part.write(fpath); //保存文件 } } getPart:接受一个表单名为参数,返回对应的Part对象 getParts:返回一个包含所有Part的Collection集合 多个file集合保存: String fname = ""; String fpath = request.getRealPath(File.separator+"dirname"); for (Part part : request.getParts()) { fname = part.getSubmittedFileName(); part.write(fpath +File.separator+ fname); }
| 返回类型 | 方法/描述 |
|---|---|
| String | getContentType() 获取上传文件的MIME类型 |
| String | getName() 获取表单项的名称,不是文件名称 |
| String | getHeader(String header) 获取指定头的值 |
| long | getSize() 获取上传文件的大小 |
| InputStream | getInputStream() 获取上传文件的内容 |
| void | write(String fileName) 把上传文件保存到指定路径下 |
纯html:
<a href="a.zip" download>
注:download的兼容不好,老版本浏览器href文件类型不能是txt、png等类型的文件