Tôi tạo tài liệu PDF trong bộ nhớ dưới dạng OutputStream
s. Chúng sẽ được tải lên S3. Vấn đề của tôi là bạn không thể tạo trực tiếp số PutObjectRequest
từ số OutputStream
(theo số this thread in the AWS dev forum). Tôi sử dụng aws-java-sdk-s3
v1.10.8 trong ứng dụng Dropwizard.Làm thế nào để tải lên một Java OutputStream đến AWS S3
Hai cách giải quyết tôi có thể thấy cho đến nay là:
- Sao chép
OutputStream
mộtInputStream
và chấp nhận rằng hai lần dung lượng RAM được sử dụng. - ống các
OutputStream
mộtInputStream
và chấp nhận các nguyên cần thiết của một chủ đề phụ (xem this answer)
Nếu tôi không tìm thấy một giải pháp tốt hơn, tôi sẽ đi với # 1, vì nó trông như thể tôi có thể đủ khả năng bộ nhớ thêm dễ dàng hơn so với chủ đề/CPU trong thiết lập của tôi.
Có cách nào khác, có thể hiệu quả hơn để đạt được điều này mà tôi đã bỏ qua cho đến nay không?
Edit: My OutputStream
s là ByteArrayOutputStream
s
"Tôi tạo tài liệu PDF trong bộ nhớ như OutputStreams" - ?? một 'OutputStream' không lưu trữ dữ liệu (có thể ngoại trừ' ByteArrayOutputStream', nhưng sau đó bạn muốn nói rằng bạn đã tạo nó trong bộ nhớ như là một mảng * byte *) – immibis
Tôi sử dụng ByteArrayOutputStream. Xin lỗi vì sự nhầm lẫn. – EagleBeak
Tôi có một câu hỏi tương tự - http://stackoverflow.com/questions/40268320/how-to-store-object-on-s3-using-outputstream. Bạn có thể tìm ra giải pháp cho việc này không? Nếu không, làm thế nào bạn đi về làm # 1 trong trường hợp của bạn? – Omnipresent