【问题标题】:converting byte stream in HTTPResponse body into a pdf file将 HTTPResponse 正文中的字节流转换为 pdf 文件
【发布时间】:2019-01-09 01:14:11
【问题描述】:

当我通过邮递员访问 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();

【问题讨论】:

标签: java spring pdf


【解决方案1】:

在将其保存到文件之前创建一个临时的byte[] 数组来存储整个响应主体是一种浪费。您想将响应 InputStream 写入文件的 OutputStream

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多