springboot 如何下载文件
时间: 2024-09-29 18:13:48 浏览: 16
Spring Boot 中下载文件通常通过`ResponseEntity`和`StreamingResponseBody`来实现。这里有两个主要的方法:
1. **直接响应文件内容**[^1]:
```java
@GetMapping("/download")
public ResponseEntity<StreamingResponseBody> downloadFile() {
// 假设fileUrl是文件的路径或URL
try (InputStream inputStream = new BufferedInputStream(new URL(fileUrl).openStream())) {
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileName + "\"") // 设置文件名
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(BodyWrapper.wrap(inputStream));
} catch (IOException e) {
throw new RuntimeException("Error downloading file", e);
}
}
```
2. **利用Spring MVC的`StreamingResource`**[^2]:
```java
@GetMapping("/download")
public ResponseEntity<StreamingResource> downloadFileAsResource() {
StreamingResource resource = new StreamingResource(new FileSystemResource(new File(fileUrl)), fileName);
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileName + "\"");
return ResponseEntity.ok().headers(headers).resource(resource);
}
```
注意:确保在生产环境中,文件访问权限设置正确,并且网络配置允许从远程URL读取。
阅读全文