使用注解的方式实现springboot文件上传下载
时间: 2023-11-23 22:10:00 浏览: 77
首先,在Spring Boot中,文件上传和下载都是通过MultipartFile实现的,因此需要在Controller层中添加上传和下载的方法,并使用注解来支持文件上传和下载。
1. 添加文件上传方法
```java
@PostMapping("/upload")
public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) {
String fileName = file.getOriginalFilename();
try {
// 将文件保存到指定路径
file.transferTo(new File(uploadPath + fileName));
return ResponseEntity.ok().body("上传成功");
} catch (IOException e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("上传失败");
}
}
```
其中,@PostMapping注解表示该方法支持POST请求,@RequestParam注解用于获取上传的文件,uploadPath为文件上传的路径,需要在application.properties文件中进行配置。
2. 添加文件下载方法
```java
@GetMapping("/download")
public ResponseEntity<Resource> downloadFile(@RequestParam("fileName") String fileName) throws FileNotFoundException {
File file = new File(uploadPath + fileName);
if (!file.exists()) {
throw new FileNotFoundException("文件不存在!");
}
InputStreamResource resource = new InputStreamResource(new FileInputStream(file));
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", String.format("attachment; filename=\"%s\"", fileName));
headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
headers.add("Pragma", "no-cache");
headers.add("Expires", "0");
return ResponseEntity.ok()
.headers(headers)
.contentLength(file.length())
.contentType(MediaType.parseMediaType("application/octet-stream"))
.body(resource);
}
```
其中,@GetMapping注解表示该方法支持GET请求,@RequestParam注解用于获取要下载的文件名,InputStreamResource用于读取文件内容,HttpHeaders用于设置响应头,MediaType用于设置响应类型。
以上就是使用注解实现Spring Boot文件上传下载的方法,需要注意的是,在进行文件上传下载时需要进行文件类型的判断和异常处理。
阅读全文