簡體   English   中英

如何將Java OutputStream上載到AWS S3

[英]How to upload a Java OutputStream to AWS S3

我在內存中創建PDF文檔作為OutputStream 這些應該上傳到S3。 我的問題是不可能直接從OutputStream創建一個PutObjectRequest (根據AWS dev論壇中的這個線程 )。 我在Dropwizard應用程序中使用aws-java-sdk-s3 v1.10.8。

到目前為止我能看到的兩個解決方法是:

  1. OutputStream復制到InputStream並接受使用兩倍量的RAM。
  2. OutputStream傳遞給InputStream並接受額外線程的開銷(請參閱此答案

如果我沒有找到更好的解決方案,我會選擇#1,因為在我的設置中,它看起來好像能夠比線程/ CPU更容易支付額外的內存。

到目前為止,我是否還有其他任何可能更有效的方式來實現這一目標?

編輯:我的OutputStreamByteArrayOutputStream

我通過繼承ConvertibleOutputStream解決了這個問題:

public class ConvertibleOutputStream extends ByteArrayOutputStream {
    //Craetes InputStream without actually copying the buffer and using up mem for that.
    public InputStream toInputStream(){
        return new ByteArrayInputStream(buf, 0, count);
    }
}

OutputStream的實際類型是什么? 因為它是一個抽象類,所以沒有說數據實際上在哪里(或者甚至在任何地方)。

但是我們假設您正在談論ByteArrayOutputStream因為它至少將數據保存在內存中(與許多其他數據不同)。

如果從其緩沖區中創建ByteArrayInputStream ,則沒有重復的內存。 這就是整個流媒體的想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM