我想将具有pdf数据的OutputStream对象作为文件发送到webbrowser。
代码如下。
@RequestMapping(value="/issue", method=RequestMethod.POST)
public void issue(HttpServletResponse response, TimeStampIssueParam param) throws JsonGenerationException, JsonMappingException, IOException {
OutputStream pdfOuput = issue(input);
response.setContentType("application/pdf");
ServletOutputStream respOutput = response.getOutputStream();
....
}
问题是我已经有了输出流,我不想将其转换为字节数组。
任何评论都将不胜感激。
答案 0 :(得分:1)
您不能:您只能将InputStream复制到OutputStream。然后,您可以使用:org.springframework.util.FileCopyUtils.copy(InputStream,OutputStream)
答案 1 :(得分:1)
首先,我想说OutputStream有任何数据是错误的。流只是让数据通过某个目的地。有时(SocketOutputStream)这个目的地可能在一个完全不同的计算机上,有时(ByteArrayOutputStream)它将与流密切相关,甚至可以通过它获得。但这是一个特定流的细节,而不是你可以依赖的任何东西。
因此,不知道issue
方法的结果究竟来自哪里很难提供解决方案,但是通用的OutputStream不是应该返回的。
猜测该方法生成一些PDF数据并通过OutputStream将其写入某处,然后返回流:
File
并且该流恰好是FileOutputStream,它应该返回相同文件的文件,文件路径或FileInputStream。writeTo
方法,可以直接用于将数据写入ServletOutputStream; issue
只需要将流作为正确类型返回,而不是将其隐藏在通用接口后面。