springBoot图片上传下载
时间: 2023-07-26 13:28:51 浏览: 84
spring boot实现图片上传和下载功能
5星 · 资源好评率100%
Spring Boot中的文件上传和下载可以分别通过MultipartFile和Resource对象来实现。下面是一个简单的示例:
1. 文件上传
文件上传过程在上一个回答中已经讲解过了,这里只简单回顾一下。在Spring Boot中,可以使用@RequestParam注解来接收上传的文件,然后使用MultipartFile对象的方法来处理文件。例如:
```
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) {
try {
// 获取文件名
String fileName = file.getOriginalFilename();
// 获取文件的字节数组
byte[] bytes = file.getBytes();
// 将文件保存到指定位置
Path path = Paths.get("uploads/" + fileName);
Files.write(path, bytes);
return "上传成功!";
} catch (IOException e) {
e.printStackTrace();
return "上传失败!";
}
}
```
2. 文件下载
文件下载的实现需要使用到Spring Boot中的Resource对象。Resource对象是一个抽象概念,它可以代表一个文件、一个classpath资源或一个远程资源。在Spring Boot中,可以使用ResourceLoader对象来加载Resource对象。例如:
```
@GetMapping("/download")
public ResponseEntity<Resource> downloadFile() {
// 加载文件资源
Resource resource = new FileSystemResource("uploads/file.txt");
// 构建响应体
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=file.txt");
// 返回响应
return ResponseEntity.ok()
.headers(headers)
.contentLength(resource.contentLength())
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource);
}
```
在上述示例中,我们首先使用FileSystemResource加载文件资源,然后构建响应体,设置Content-Disposition头部信息,告诉浏览器将文件作为附件下载。最后,使用ResponseEntity来返回响应,设置Content-Length和Content-Type等头部信息,将Resource对象作为响应体返回。
需要注意的是,这里的文件路径是相对于应用程序的工作目录的,可以根据实际情况进行修改。
阅读全文