如何在 Spring 引导中 return InputStream 作为文件?
How to return an InputStream as a file in Spring Boot?
我有一个 InputStream 到一个使用 JSch 通过 SSH 从服务器获取的文件。我想 return 它作为我的 Spring 启动应用程序中的一个文件。
尝试使用我在许多论坛上看到的 ResponseEntity,但它不起作用
您可以使用 StreamingResponseBody
阅读我写的 post 以查看有关如何发送文件流的示例。
您可以像这样使用 HttpServletResponse:
public static void sendFileInResponse (HttpServletResponse response, InputStream inputStream) throws IOException {
response.setContentType("your_content_type");
response.setHeader("Content-Disposition", "inline;filename=your_file_name");
OutputStream outputStream = response.getOutputStream();
byte[] buff = new byte[2048];
int length = 0;
while ((length = inputStream.read(buff)) > 0) {
outputStream.write(buff, 0, length);
outputStream.flush();
}
outputStream.close();
inputStream.close();
response.setHeader("Cache-Control", "private");
response.setDateHeader("Expires", 0);
}
我有一个 InputStream 到一个使用 JSch 通过 SSH 从服务器获取的文件。我想 return 它作为我的 Spring 启动应用程序中的一个文件。
尝试使用我在许多论坛上看到的 ResponseEntity,但它不起作用
您可以使用 StreamingResponseBody
阅读我写的 post 以查看有关如何发送文件流的示例。
您可以像这样使用 HttpServletResponse:
public static void sendFileInResponse (HttpServletResponse response, InputStream inputStream) throws IOException {
response.setContentType("your_content_type");
response.setHeader("Content-Disposition", "inline;filename=your_file_name");
OutputStream outputStream = response.getOutputStream();
byte[] buff = new byte[2048];
int length = 0;
while ((length = inputStream.read(buff)) > 0) {
outputStream.write(buff, 0, length);
outputStream.flush();
}
outputStream.close();
inputStream.close();
response.setHeader("Cache-Control", "private");
response.setDateHeader("Expires", 0);
}