Springboot 下载
时间: 2024-03-15 08:23:31 浏览: 21
Springboot提供了多种下载文件的方式。一种常见的方式是使用response输出流下载。在这种方式下,可以将要下载的文件通过输入流读取到内存中,然后通过响应输出流输出到前端。可以参考以下代码实现:
```java
@RequestMapping("/download")
public void download(HttpServletResponse response) throws IOException {
// 读取文件到内存中
byte[] bytes = Files.readAllBytes(new File("path/to/file").toPath());
// 设置响应头信息
response.reset();
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition", "attachment; filename=test.png");
// 获取响应输出流
ServletOutputStream outputStream = response.getOutputStream();
// 将文件数据写入输出流
outputStream.write(bytes);
// 关闭输出流
outputStream.close();
}
```
另一种方式是使用ResponseEntity。在这种方式下,可以将要下载的文件封装成ByteArrayResource对象,并将其作为响应体返回给前端。可以参考以下代码实现:
```java
@GetMapping("/download")
public ResponseEntity<ByteArrayResource> download() throws IOException {
// 读取文件到内存中
byte[] bytes = Files.readAllBytes(new File("path/to/file").toPath());
// 将文件封装成ByteArrayResource
ByteArrayResource resource = new ByteArrayResource(bytes);
// 设置响应头信息
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", "test.png");
// 返回响应实体
return ResponseEntity.ok()
.headers(headers)
.body(resource);
}
```
以上是两种常见的Springboot下载文件的方式,可以根据具体的需求选择适合的方式进行实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [springboot:各种下载文件的方式](https://blog.csdn.net/weixin_43296313/article/details/125100824)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [SpringBoot实现文件下载的几种方式](https://blog.csdn.net/aaa58962458/article/details/120764754)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]