Servlet支持上传文件操作,在HttpServletRequest类中,通过Part对象的getPart方法便可以获取请求中指定name的文件。

上传文件分为两个部分,前端部分和后端部分,关于文件操作,这两个部分都很简单,代码量很少。

各文件路径如下:

maven各文件路径

前端页面:创建一个html文件,通过form表单的action属性,与后端Servlet相关联,method属性指定方法,上传文件通常为post,通过enctype属性指定编码方式,上传文件为multipart/form-data。

1
2
3
4
<form action="file" method="post" enctype="multipart/form-data">
<input type="file" name="myFile">
<input type="submit" value="提交">
</form>

后端部分:创建一个上传文件的类Upload,继承HttpServlet,@WebServlet()注解内容与前端页面form表单的action路径相同(此处有/),此外还需要@MultipartConfig注解,缺少该注解将无法正确读取文件。 通过Part对象的getPart()方法获取文件,方法内参数为前端界面input中类型为file格式的name属性值。通过write方法可以将文件写入磁盘,方法内参数为磁盘路径。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@MultipartConfig
@WebServlet("/file")
public class Upload extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
Part part = req.getPart("myFile");
System.out.println(part.getContentType());
System.out.println(part.getName());
System.out.println(part.getSize());
part.write("d:/myFile.png");
resp.getWriter().write("上传成功");
}
}