AWS загрузить входной поток неизвестного размера в S3JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 AWS загрузить входной поток неизвестного размера в S3

Сообщение Anonymous »

Я пытаюсь загрузить входной поток, полученный в результате загрузки файла в соответствии с документацией AWS здесь: Загрузите поток неизвестного размера в объект Amazon S3
Вот как выглядит мой код :

Код: Выделить всё

private void uploadToS3(String key, InputStream inputStream) {
try (S3TransferManager s3TransferManager = S3TransferManager.builder().s3Client(s3).build()) {
BlockingInputStreamAsyncRequestBody body = AsyncRequestBody.forBlockingInputStream(null);

UploadRequest uploadRequest = UploadRequest.builder().requestBody(body).putObjectRequest(
req -> req.bucket(bucket).key(key)
).build();

Upload upload = s3TransferManager.upload(uploadRequest);
body.writeInputStream(inputStream);
upload.completionFuture().join();
}
Однако, когда я это делаю, я понимаю, что изображения всегда повреждены (а PDF-файлы — нет). Дальнейшее расследование показало, что первый байт загружаемого объекта всегда отсутствует. Однако, если бы я вызвал метод readAllBytes() для входного потока и загрузил его как массив байтов, объект будет сохранен правильно.
Можно ли мне каким-либо образом можно ли преодолеть это без необходимости считывать все байты в память? Спасибо

Подробнее здесь: https://stackoverflow.com/questions/793 ... size-to-s3
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»