springBoot写文件下载功能
时间: 2024-03-24 19:35:46 浏览: 48
实现文件下载功能可以使用 Spring Boot 提供的 ResponseEntity 类,示例代码如下:
```java
@GetMapping("/download")
public ResponseEntity<Resource> downloadFile(@RequestParam("file") String fileName) throws IOException {
// 获取文件资源
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")` 指定了该方法处理 `/download` 路径的 GET 请求,`@RequestParam("file")` 获取了请求参数中名为 `file` 的值,即要下载的文件名称。`Resource` 类表示文件资源,可以是本地文件、网络文件或者其他类型的资源。`FileSystemResource` 是 `Resource` 的一个实现类,表示本地文件资源,需要指定文件的绝对路径。
`HttpHeaders` 类用于设置响应头,其中 `CONTENT_DISPOSITION` 指定了浏览器如何处理下载的文件,这里设置为 `attachment` 表示下载文件而不是直接打开。
最后,通过 `ResponseEntity` 类的静态方法 `ok()` 创建一个表示成功响应的实体,设置响应头、响应内容和响应状态码,并返回给客户端。
阅读全文