Ich erstelle PDF-Dokumente im Speicher als OutputStream
s. Diese sollten in S3 hochgeladen werden. Mein Problem ist, dass es nicht möglich ist, einen PutObjectRequest
von einem OutputStream
direkt zu erstellen (nach this thread in the AWS dev forum). Ich benutze aws-java-sdk-s3
v1.10.8 in einer Dropwizard App.So laden Sie einen Java OutputStream nach AWS S3
Die beiden Abhilfen ich bisher sehen können, sind:
- Kopieren Sie die
OutputStream
zu einemInputStream
und akzeptieren, dass die doppelte Menge an RAM verwendet wird. - Rohr die
OutputStream
zu einemInputStream
und den Aufwand eines zusätzlichen Fadens akzeptieren (siehe this answer)
Wenn ich mich mit # 1, gehe nicht um eine bessere Lösung finden, weil es, als ob ich aussieht könnte mir den zusätzlichen Speicher leichter leisten als Threads/CPU in meinem Setup.
Gibt es andere, möglicherweise effizientere Möglichkeiten, dies zu erreichen, die ich bisher übersehen habe?
Edit: Meine OutputStream
s sind ByteArrayOutputStream
s
"Ich PDF-Dokumente im Speicher als OutputStreams erstellen" - ?? Ein 'OutputStream' speichert keine Daten (möglicherweise außer' ByteArrayOutputStream', aber dann würden Sie sagen, dass Sie es im Speicher als * Byte-Array * erstellt haben) – immibis
Ich benutze ByteArrayOutputStream. Entschuldigung für die Verwirrung. – EagleBeak
Ich habe eine ähnliche Frage - http://stackoverflow.com/questions/40268320/how-to-store-object-on-s3-using-outputstream. Konnten Sie dafür eine Lösung finden? Wenn nicht, wie sind Sie in Ihrem Fall zu # 1 gegangen? – Omnipresent