ResponseEntity 得到输出流
时间: 2023-08-22 08:05:06 浏览: 81
可以通过`ResponseEntity`的`getBody()`方法获取返回的数据。如果返回的是一个流(例如文件流),可以使用`IOUtils.copy()`方法将流复制到输出流中。以下是一个示例代码:
```
@GetMapping("/download")
public ResponseEntity<byte[]> downloadFile() throws IOException {
File file = new File("path/to/file.txt");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", file.getName());
headers.setContentLength(file.length());
return new ResponseEntity<>(IOUtils.toByteArray(new FileInputStream(file)), headers, HttpStatus.OK);
}
```
在上面的代码中,我们使用`IOUtils.toByteArray()`方法将文件流转换为字节数组,然后将字节数组作为`ResponseEntity`的返回值。在响应头中,我们设置了`Content-Type`为`application/octet-stream`,表示返回的是二进制流数据。同时,我们也设置了`Content-Disposition`为`attachment`,表示告诉浏览器以附件形式下载文件。最后,我们也设置了`Content-Length`为文件大小,表示告诉浏览器文件的大小,以便浏览器可以正确地显示下载进度。
阅读全文