请使用 `MultipartFile` 实现文件的上传和下载,给出详细的示例代码
时间: 2024-02-22 11:00:11 浏览: 58
好的,下面是使用 Spring Boot 和 `MultipartFile` 实现文件上传和下载的示例代码:
文件上传:
```java
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) {
try {
// 保存文件到本地磁盘
String fileName = file.getOriginalFilename();
String filePath = "C:/uploads/";
File dest = new File(filePath + fileName);
file.transferTo(dest);
return "File uploaded successfully!";
} catch (IOException e) {
e.printStackTrace();
return "File upload failed!";
}
}
```
文件下载:
```java
@GetMapping("/download")
public ResponseEntity<Resource> downloadFile(@RequestParam("fileName") String fileName) {
// 加载文件到 Resource 对象
Resource resource = new FileSystemResource("C:/uploads/" + fileName);
// 设置 ResponseHeader
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName);
// 返回 ResponseEntity
return ResponseEntity.ok()
.headers(headers)
.contentLength(resource.getFile().length())
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource);
}
```
以上代码中,文件上传的逻辑是将 `MultipartFile` 对象转存到本地磁盘上,而文件下载的逻辑是将本地磁盘上的文件转换成 `Resource` 对象并设置响应头,然后以 `ResponseEntity` 的形式返回给客户端。
阅读全文