您的位置:

使用Spring Boot实现文件上传

一、Spring Boot文件上传的介绍

在Web开发中,文件上传功能是一个比较基础且常见的功能,利用Spring Boot可以快速实现文件上传,并且可以实现大小、格式等限制。在本文中,我们将详细介绍如何使用Spring Boot实现文件上传功能。

二、Spring Boot文件上传的实现步骤

文件上传分为两个部分:前端页面的实现和Spring Boot后台的实现。在前端页面中需要添加文件上传的输入框和提交按钮。在后台实现中,需要建立一个控制器用于接收上传的文件。

1. 前端页面的实现

前端页面的实现包含两个部分:文件上传的输入框和提交按钮。

<form action="/file/upload" method="post" enctype="multipart/form-data">
  <input type="file" name="file" id="file">
  <input type="submit" value="提交">
</form>

在表单中,需要设置enctype为multipart/form-data,这样才可以支持文件上传。input标签的type设置为file,这样就可以选择需要上传的文件。

2. 后台实现

在Spring Boot项目中,需要建立一个Controller用于接收上传的文件。在Controller中使用MultipartFile参数接收文件,同时使用@RequestParam注解可以设置文件的大小和格式等限制。

@RestController
public class FileUploadController {
    
  @PostMapping("/file/upload")
  public String fileUpload(@RequestParam("file") MultipartFile file) {
      if(file.isEmpty()) {
          return "上传失败,请选择文件";
      }
      String fileName = file.getOriginalFilename();
      String filePath = "D:/upload/";
      File dest = new File(filePath + fileName);
      try {
          file.transferTo(dest);
          return "上传成功";
      } catch (IOException e) {
          return "上传失败!";
      }
  }
}

在处理文件上传时,首先需要判断上传的文件是否为空。如果文件为空,则返回上传失败。在接收到文件后,可以获取文件名和文件路径,并利用File类新建一个文件对象。在利用transferTo方法将文件从临时位置转移到指定位置。在transferTo方法执行成功后,就可以返回上传成功的信息。

3. 文件大小和类型的限制

在上面的代码中,我们并没有对文件的大小和类型进行限制。下面是对文件大小和类型进行限制的代码。

@PostMapping("/file/upload")
public String fileUpload(@RequestParam("file") MultipartFile file) {
    if(file.isEmpty()) {
      return "上传失败,请选择文件";
    }
    String fileName = file.getOriginalFilename();
    String suffixName = fileName.substring(fileName.lastIndexOf("."));
    long size = file.getSize();
    if(size > 500*1024) {
      return "上传失败,文件大小不能超过500kb";
    }
    String[] allowedSuffixes = {".jpg", ".jpeg", ".png"};
    boolean allowedFlag = false;
    for(String suffix : allowedSuffixes) {
      if(suffixName.equalsIgnoreCase(suffix)) {
          allowedFlag = true;
          break;
      }
    }
    if(!allowedFlag) {
      return "上传失败,文件格式不正确";
    }
    String filePath = "D:/upload/";
    File dest = new File(filePath + fileName);
    try {
      file.transferTo(dest);
      return "上传成功";
    } catch (IOException e) {
      return "上传失败!";
    }
}

以上代码中,首先获取文件名和文件后缀。在获取到文件后缀后,可以通过判断文件后缀是否在允许上传的文件格式中来进行判断。在判断完文件格式后,获取文件的大小,并判断文件大小是否超出规定范围。若文件大小或格式不符合要求,则返回上传失败信息。

三、小结

在本文中,我们详细介绍了如何使用Spring Boot实现文件上传功能。首先在前端页面中添加文件上传的输入框和提交按钮。在后台实现中,建立一个Controller用于接收上传的文件,并可以对文件的大小和类型进行限制。