FileUpload

文件上传工具类

1.添加依赖

  • 在pom文件添加依赖
  1. <dependency>
  2. <groupId>commons-fileupload</groupId>
  3. <artifactId>commons-fileupload</artifactId>
  4. <version>1.4</version>
  5. </dependency>
  • 添加IO包简化IO操作
  1. <dependency>
  2. <groupId>commons-io</groupId>
  3. <artifactId>commons-io</artifactId>
  4. <version>2.8.0</version>
  5. </dependency>

2.FileUpload核心类

类名 介绍
DiskFileItemFactory 磁盘文件项工厂, 读取文件时相关的配置,比如: 缓存的大小 , 临时目录的位置
ServletFileUplaod 文件上传的一个核心类
FileItem 代表每一个表单项

3.文件上传的API

  • ServletFileUpload类 | 方法 | 说明 | | —- | —- | | isMultipartContent(request); | 判断是否是一个文件上传的表单 | | parseRequest(request); | 解析request获得表单项的集合 | | setHeaderEncoding(“UTF-8”); | 设置上传的文件名的编码方式 |
  • FileItem类 | 方法 | 说明 | | —- | —- | | isFormField() | 判断是否是普通表单项 | | getFieldName() | 获得表单的name属性值 | | item.getString() | 获得表单的value值 | | getName() | 获得上传文件的名称 | | getInputStream() | 获得上传文件 | | delete() | 删除临时文件 |

4.文件上传方法

  • 文件上传方法
  1. public void fileUpload(HttpServletRequest req, HttpServletResponse resp)
  2. throws FileUploadException, IOException {
  3. // 1.创建磁盘文件项工厂
  4. DiskFileItemFactory factory = new DiskFileItemFactory();
  5. // 2.创建文件上传核心类
  6. ServletFileUpload upload = new ServletFileUpload(factory);
  7. // 3.设置上传文件名的编码
  8. upload.setHeaderEncoding("UTF-8");
  9. // 4.判断表单是否是文件上传表单
  10. if (ServletFileUpload.isMultipartContent(req)) {
  11. // 5.解析request ,获取文件项集合
  12. List<FileItem> list = upload.parseRequest(req);
  13. if (list != null) {
  14. // 6.遍历获取表单项
  15. for (FileItem item : list) {
  16. // 7.判断是不是文件表单项
  17. if (!item.isFormField()) {
  18. // 8.获取文件上传项
  19. String fileName = item.getName();
  20. // 9.获取文件输入流
  21. InputStream in = item.getInputStream();
  22. // 10.设置文件输出流
  23. // String path = this.getServletContext().getRealPath("/")
  24. FileOutputStream out =
  25. new FileOutputStream("/Users/upload/" + fileName);
  26. // 11.通过IO工具类保存文件到输出流
  27. IOUtils.copy(in, out);
  28. // 12.关闭输入输出流
  29. out.close();
  30. in.close();
  31. }
  32. }
  33. }
  34. }
  35. }

更新时间:{docsify-updated}