本文介绍关于如何使用ResponseEntity实现下载功能与配置文件上传解析器实现文件上传功能以及解决解决文件重名问题。
- ResponseEntity实现下载功能
ResponseEntity 可以用于实现文件下载功能。通过设置响应头部信息,可以告诉浏览器以下载方式处理返回的文件。
代码如下:
@GetMapping("/download")
public ResponseEntity<Resource> downloadFile() {
Resource resource = new FileSystemResource("/path/to/file/example.pdf");
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + resource.getFilename())
.body(resource);
}
在上面代码中, downloadFile 方法返回一个 ResponseEntity 对象,设置了 Content-Disposition 头部信息为"attachment; filename=example.pdf",告诉浏览器以下载方式处理返回的文件。
- 配置文件上传解析器实现文件上传功能
Spring MVC提供了 CommonsMultipartResolver 来处理文件上传。需要在Spring配置文件中配置 MultipartResolver ,并在Controller中使用 MultipartFile 参数来接收上传的文件。
代码如下:
@Bean
public CommonsMultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("UTF-8");
resolver.setMaxUploadSizePerFile(5242880); // 5MB
return resolver;
}
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
// 处理上传的文件
return "File uploaded successfully!";
}
在上面代码中,通过配置 CommonsMultipartResolver 来处理文件上传,设置了编码和最大上传文件大小。 handleFileUpload 方法接收一个 MultipartFile 对象来处理上传的文件。
- 解决文件重名的问题
为了避免文件重名问题,可以在保存文件时对文件名进行处理,例如在文件名后面添加时间戳或随机字符串。
代码如下:
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
String originalFilename = file.getOriginalFilename();
String newFilename = UUID.randomUUID().toString() + "_" + originalFilename;
// 保存文件
// ...
return "File uploaded successfully!";
}
通过使用UUID生成一个唯一的字符串作为新的文件名,避免了文件重名的问题。
原文链接: https://blog.csdn.net/2401_82884096/article/details/138022194