【发布时间】:2015-10-26 15:15:50
【问题描述】:
我在内存中创建 PDF 文档为 OutputStreams。这些应该上传到 S3。我的问题是不可能直接从OutputStream 创建PutObjectRequest(根据this thread in the AWS dev forum)。我在Dropwizard 应用程序中使用aws-java-sdk-s3 v1.10.8。
目前我能看到的两种解决方法是:
- 将
OutputStream复制到InputStream并接受两倍的 RAM 使用量。 - 将
OutputStream连接到InputStream并接受额外线程的开销(请参阅this answer)
如果我找不到更好的解决方案,我会选择 #1,因为看起来我比我的设置中的线程/CPU 更容易负担额外的内存。
到目前为止,有没有其他可能更有效的方法来实现这一点?
编辑:
我的OutputStreams 是ByteArrayOutputStreams
【问题讨论】:
-
“我在内存中创建 PDF 文档作为 OutputStreams” - ??一个
OutputStream不存储数据(可能除了ByteArrayOutputStream,但你会说你在内存中创建它作为一个字节数组) -
我使用 ByteArrayOutputStream。很抱歉造成混乱。
-
我有一个类似的问题 - stackoverflow.com/questions/40268320/… 。你能找到解决方案吗?如果没有,你是如何在你的案例中做 #1 的?
-
@Omnipresent,您可以在下面的我自己的答案中找到我所做的。
-
请参阅stackoverflow.com/a/64508183/1704634 以获得允许您直接流式传输到 S3 的解决方案,而无需将整个流存储在字节数组中。如果流太大,自动使用多部分传输。
标签: java amazon-web-services amazon-s3 inputstream outputstream