微信登录

文件上传 - 多文件上传 - 支持多个文件上传

Java - Web - Spring 《文件上传 - 多文件上传 - 支持多个文件上传》

在 Web 开发中,文件上传是一个非常常见的需求。例如,在一个图片分享网站中,用户可能需要一次性上传多张图片;在一个文档管理系统中,用户也可能需要批量上传多个文档。Spring 框架为我们提供了便捷的方式来实现多文件上传功能,本文将详细介绍如何在 Spring 项目中实现多文件上传。

1. 项目环境搭建

首先,我们需要创建一个 Spring Boot 项目。可以使用 Spring Initializr(https://start.spring.io/)来快速生成项目骨架,添加以下依赖:

  • Spring Web
  • Spring Boot DevTools(可选,用于开发时热部署)

2. 配置文件上传

application.propertiesapplication.yml 中添加文件上传相关的配置,例如:

  1. # 设置单个文件最大上传大小
  2. spring.servlet.multipart.max-file-size=10MB
  3. # 设置一次请求中所有文件的最大上传大小
  4. spring.servlet.multipart.max-request-size=100MB

3. 创建 HTML 表单

创建一个简单的 HTML 表单,用于选择并上传多个文件。在 src/main/resources/static 目录下创建 upload.html 文件,代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>多文件上传</title>
  6. </head>
  7. <body>
  8. <form action="/upload" method="post" enctype="multipart/form-data">
  9. <input type="file" name="files" multiple>
  10. <input type="submit" value="上传">
  11. </form>
  12. </body>
  13. </html>

这里的 multiple 属性允许用户选择多个文件进行上传,表单的 action 属性指定了处理上传请求的 URL。

4. 创建控制器

创建一个 Spring 控制器来处理文件上传请求。在 src/main/java 目录下创建控制器类,代码如下:

  1. import org.springframework.stereotype.Controller;
  2. import org.springframework.web.bind.annotation.PostMapping;
  3. import org.springframework.web.bind.annotation.RequestParam;
  4. import org.springframework.web.multipart.MultipartFile;
  5. import java.io.File;
  6. import java.io.IOException;
  7. import java.util.List;
  8. @Controller
  9. public class FileUploadController {
  10. @PostMapping("/upload")
  11. public String handleFileUpload(@RequestParam("files") List<MultipartFile> files) {
  12. if (files!= null &&!files.isEmpty()) {
  13. for (MultipartFile file : files) {
  14. if (!file.isEmpty()) {
  15. try {
  16. // 获取文件的原始文件名
  17. String fileName = file.getOriginalFilename();
  18. // 指定文件保存的路径
  19. String filePath = "uploads/" + fileName;
  20. // 创建保存文件的目录
  21. File dest = new File(filePath);
  22. if (!dest.getParentFile().exists()) {
  23. dest.getParentFile().mkdirs();
  24. }
  25. // 将文件保存到指定路径
  26. file.transferTo(dest);
  27. } catch (IOException e) {
  28. e.printStackTrace();
  29. return "上传失败";
  30. }
  31. }
  32. }
  33. return "上传成功";
  34. }
  35. return "没有选择文件";
  36. }
  37. }

在这个控制器中,我们使用 @RequestParam("files") 注解来接收表单中名为 files 的多个文件,类型为 List<MultipartFile>。然后遍历这个列表,将每个文件保存到指定的目录中。

5. 运行项目

启动 Spring Boot 项目,访问 http://localhost:8080/upload.html,选择多个文件并点击上传按钮,即可完成多文件上传。

6. 总结

步骤 描述
1. 项目环境搭建 使用 Spring Initializr 创建 Spring Boot 项目,添加必要的依赖
2. 配置文件上传 在配置文件中设置文件上传的最大大小
3. 创建 HTML 表单 使用 multiple 属性允许用户选择多个文件,指定表单的 actionenctype
4. 创建控制器 使用 @RequestParam 注解接收多个文件,遍历文件列表并保存到指定目录
5. 运行项目 启动项目,访问表单页面进行文件上传

通过以上步骤,我们就可以在 Spring 项目中实现多文件上传功能。在实际开发中,还可以根据需求对文件进行进一步的处理,例如文件类型验证、文件重命名等。希望本文对你有所帮助!

文件上传 - 多文件上传 - 支持多个文件上传