springboot文件下载
时间: 2023-05-26 09:05:22 浏览: 102
springboot 文件上传下载
Spring Boot提供了基于`Resource`的方式进行文件下载,代码如下:
```java
@GetMapping("/download/{fileName}")
public ResponseEntity<Resource> downloadFile(@PathVariable String fileName) {
Resource resource = new FileSystemResource("/path/to/files/" + fileName);
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileName + "\"");
return ResponseEntity.ok()
.headers(headers)
.contentLength(resource.contentLength())
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource);
}
```
其中,`@GetMapping("/download/{fileName}")`表示接收以`/download/`开头后跟文件名的请求,`${fileName}`会被映射到方法参数中的`fileName`中。
`FileSystemResource`是Spring提供的一个以文件系统路径为参数的`Resource`实现,可以用来加载本地文件资源。如果需要从其他位置加载文件资源,可以使用其他实现方式,如`UrlResource`或者`ClassPathResource`。
`HttpHeaders`用于设置response的header信息,此处使用了`CONTENT_DISPOSITION`头,表示文件下载时需要显示“保存文件”的对话框,并将文件名设置为`fileName`。
最后,使用`ResponseEntity`打包文件资源,设置Content-Type为`APPLICATION_OCTET_STREAM`,即二进制流类型,之后返回`Resource`即可。
需要注意的是,如果需要下载的资源不存在,会抛出404错误。同时,如果文件下载时出现异常,建议使用异常拦截器统一处理。
阅读全文