将HTTPResponse主体中的字节流转换为pdf文件

时间:2018-08-01 12:49:19

标签: java spring pdf

当我通过邮递员访问API时,我可以下载pdf文件。 当我通过Java代码访问相同的API时,我在ResponseBody中得到pdf内容。 而且我可以使用响应正文内容创建一个新的pdf文件,但是当我打开该文件时它是空白的。

我的问题是我如何创建内容与响应相同的新文件。

我尝试了愚弄。转换响应的代码

file  = new File("/home/abc.pdf");
            outputStream = new BufferedOutputStream(new FileOutputStream(file));
            if (!file.exists()) {
                file.createNewFile();
            }

            byte[] contentInBytes = response.getBody().getBytes();
            System.out.println(Arrays.toString(contentInBytes));

            outputStream.write(contentInBytes);
            outputStream.flush();
            outputStream.close();

1 个答案:

答案 0 :(得分:0)

创建临时byte[]数组以存储整个响应正文,然后再将其保存到文件中是很浪费的。您想要将响应InputStream写入文件OutputStream

这可以通过几种方式完成,一种方式是使用番石榴的ByteStreams.copy(),例如:

try (OutputStream out = Files.newOutputStream(Paths.get("abc.pdf")) {
    ByteStreams.copy(response.getBody(), out);
}