SpringBoot怎么实现文件上传和下载

avatar
作者
猴君
阅读量:15

在Spring Boot中实现文件上传和下载可以通过以下步骤来实现:

  1. 文件上传: 使用Spring Boot的MultipartFile类来处理文件上传。首先在Controller中创建一个POST接口来处理文件上传请求:
@PostMapping("/upload") public ResponseEntity uploadFile(@RequestParam("file") MultipartFile file) {     // 保存文件到本地或者存储到数据库     // 返回成功或者失败的消息 }  
  1. 文件下载: 创建一个GET接口来处理文件下载请求,并在Controller中编写如下代码:
@GetMapping("/download/{fileName}") public ResponseEntity downloadFile(@PathVariable String fileName) {     // 从本地或者数据库中获取文件     Resource resource = fileStorageService.loadFileAsResource(fileName);      // 设置响应头     return ResponseEntity.ok()             .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename="" + resource.getFilename() + """)             .body(resource); } 

要实现文件上传和下载,还需要创建一个文件存储服务类(FileStorageService),并在该类中编写文件保存和加载的逻辑。例如,可以使用以下方法保存上传的文件到本地:

@Service public class FileStorageService {      @Value("${file.upload-dir}")     private String uploadDir;      public void storeFile(MultipartFile file) {         Path filePath = Paths.get(uploadDir).resolve(file.getOriginalFilename());         try {             Files.copy(file.getInputStream(), filePath, StandardCopyOption.REPLACE_EXISTING);         } catch (IOException e) {             e.printStackTrace();         }     }      public Resource loadFileAsResource(String fileName) {         try {             Path filePath = Paths.get(uploadDir).resolve(fileName).normalize();             Resource resource = new UrlResource(filePath.toUri());             if(resource.exists()) {                 return resource;             } else {                 throw new FileNotFoundException("File not found " + fileName);             }         } catch (MalformedURLException | FileNotFoundException ex) {             ex.printStackTrace();         }         return null;     } } 

在上述示例中,file.upload-dir是配置文件中配置的文件上传目录,可以在application.properties文件中配置:

file.upload-dir=/path/to/upload/dir 

这样就可以在Spring Boot中实现文件上传和下载功能。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!