ResponseEntity返回输出流
时间: 2024-01-28 16:35:25 浏览: 155
Spring MVC学习笔记之json格式的输入和输出
回答: ResponseEntity可以用于返回输出流。在Spring框架中,可以通过设置ResponseEntity的响应体内容为输出流来实现返回输出流的功能。具体实现方式如下所示:
```java
@GetMapping("/download")
public ResponseEntity<InputStreamResource> downloadFile() throws IOException {
// 从文件系统或其他地方获取要下载的文件流
InputStream fileStream = getFileStream();
// 创建一个InputStreamResource对象,将文件流包装起来
InputStreamResource resource = new InputStreamResource(fileStream);
// 设置响应头信息,例如文件名、文件类型等
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=myfile.txt");
// 返回ResponseEntity对象,设置响应状态码和响应体内容
return ResponseEntity.ok()
.headers(headers)
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource);
}
```
在上述代码中,我们通过`InputStreamResource`将文件流包装起来,并设置了响应头信息,然后使用`ResponseEntity.ok()`方法创建一个成功的响应实体,设置了响应状态码和响应体内容为`InputStreamResource`对象。最后,通过`.body(resource)`将`InputStreamResource`对象作为响应体返回。
这样,当客户端请求该接口时,会收到一个包含文件流的响应,可以直接下载文件。
阅读全文