springboot如何实现文件从服务器下载
时间: 2023-07-15 09:11:49 浏览: 89
Spring Boot可以通过使用`Resource`和`ResponseEntity`类来实现文件从服务器下载。
首先,需要将文件转换为`Resource`对象。可以通过使用`ClassPathResource`、`FileSystemResource`或`UrlResource`等类来创建`Resource`对象。例如,下面的代码从本地文件系统中创建一个`Resource`对象:
```java
Resource resource = new FileSystemResource("/path/to/file.pdf");
```
然后,可以使用`ResponseEntity`类将`Resource`对象作为响应主体返回给客户端。`ResponseEntity`类具有一个静态方法`ok()`,它可以接收一个`Resource`对象并返回一个包含文件字节流和响应头的`ResponseEntity`对象。例如,下面的代码将文件作为响应主体返回给客户端:
```java
@GetMapping("/download")
public ResponseEntity<Resource> downloadFile() throws IOException {
Resource resource = new FileSystemResource("/path/to/file.pdf");
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=file.pdf");
return ResponseEntity.ok()
.headers(headers)
.contentLength(resource.contentLength())
.contentType(MediaType.APPLICATION_PDF)
.body(resource);
}
```
在上述代码中,使用`HttpHeaders`对象来设置响应头。`HttpHeaders.CONTENT_DISPOSITION`头指示浏览器下载文件而不是在浏览器中打开它。`ResponseEntity`对象的`contentLength()`方法返回文件的长度,并使用`MediaType.APPLICATION_PDF`指定响应内容类型为PDF。
最后,将上述代码添加到一个Spring Boot应用程序中,并在浏览器中访问`/download`端点即可下载文件。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)