SpringBoot单文件上传&多文件上传

755 阅读2分钟

SpringBoot单文件上传&多文件上传

通过上传文件,我们可以实现:

  1. 在线文件存储:用户可以通过Web应用程序上传和管理自己的文件。
  2. 图片上传:用户可以通过Web应用程序上传图片,然后使用这些图片。
  3. 文件分享:用户可以通过Web应用程序上传文件,然后与其他人共享。
  4. 资料库:管理员可以通过Web应用程序上传文件到资料库,以便其他人可以下载和使用这些文件。

Spring Boot文件上传功能为Web应用程序提供了一种方便和高效的方法,以管理文件并使用它们。

单文件上传

Spring Boot支持使用MultipartFile接口上传文件。

  1. 在Controller中添加一个文件上传的请求处理方法,并使用@RequestParam注解将文件作为参数传递。
  2. 在Controller方法中使用MultipartFile的transferTo()方法将文件保存到指定目录。
  3. 在配置文件中配置文件上传的路径。
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
    String message = "";
    if (file.isEmpty()) {
        message = "请选择文件上传";
        return message;
    }
    try {
        byte[] bytes = file.getBytes();
        Path path = Paths.get(UPLOADED_FOLDER + file.getOriginalFilename());
        Files.write(path, bytes);
        message = "上传成功 '" + file.getOriginalFilename() + "'";
    } catch (IOException e) {
        e.printStackTrace();
    }
    return message;
}

多文件上传且传递额外参数

在Spring Boot中批量上传文件,并且能接收参数。

  1. 在Controller中添加一个批量文件上传的请求处理方法,并使用@RequestParam注解将文件和其他参数作为参数传递。
  2. 在Controller方法中使用MultipartFile数组获取上传的文件,并对每个文件进行校验和处理,例如判断文件类型、大小等。
  3. 如果文件校验通过,则使用MultipartFile的transferTo()方法将文件保存到指定目录。
@PostMapping("/batch")
public String handleFileUpload(@RequestParam("files") MultipartFile[] files,
                               @RequestParam("param1") String param1,
                               @RequestParam("param2") String param2) {
    String message = "";
    if (files.length == 0) {
        message =  "请选择文件上传";
        return message;
    }
    for (MultipartFile file : files) {
        try {
            String originalFilename = file.getOriginalFilename();
            String extension = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
            if (!ALLOWED_EXTENSIONS.contains(extension)) {
                message = "未知文件类型. 允许 PNG 和 JPG";
                return message;
            }
            if (file.getSize() > MAX_SIZE) {
                message = "文件大小不符合. 最大容量为 2MB";
                return "message;
            }
            byte[] bytes = file.getBytes();
            Path path = Paths.get(UPLOADED_FOLDER + originalFilename);
            Files.write(path, bytes);
            message = "上传成功 '" + originalFilename + "'";
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return message;
}

常用文件类型分类及其对应的拓展名

  1. 文本文件:.txt、.doc、.docx、.pdf
  2. 图像文件:.jpg、.jpeg、.png、.gif、.bmp
  3. 视频文件:.mp4、.avi、.mov、.mkv、.flv
  4. 音频文件:.mp3、.wav、.wma、.m4a
  5. 压缩文件:.zip、.rar、.tar、.gz
  6. 程序文件:.exe、.jar、.apk
  7. 表格文件:.xls、.xlsx、.csv
  8. 网页文件:.html、.htm、.css、.js
  9. 邮件文件:.eml、.pst

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情