Возобновить загрузку нескольких частей S3: PartETag

Я пытаюсь реализовать многостраничную загрузку на Java, следуя этому примеру: https://docs.aws.amazon.com/AmazonS3/latest/dev/llJavaUploadFile.html

Но моя настоящая задача немного сложнее: мне нужно поддерживать возобновление в случае, если приложение было закрыто во время загрузки. Кроме того, я не могу использовать TransferManager - мне нужно использовать низкоуровневый API по определенной причине.

Код там довольно простой, но проблема связана с частью List<PartETag> partETags. При завершении возобновленной загрузки мне необходимо иметь эту коллекцию, предварительно заполненную в процессе загрузки. И, очевидно, если я пытаюсь завершить загрузку после перезапуска приложения, у меня больше нет этой коллекции.

Итак, вопрос: как мне завершить возобновленную загрузку? Можно ли получить List<PartETag> partETags с сервера через какой-нибудь API? У меня есть только объект MultipartUpload.

Существуют API-интерфейсы для перечисления составных загрузок и составных частей загрузки.

cementblocks 21.12.2018 03:29

Мой ответ будет работать только в том случае, если многостраничная загрузка все еще продолжается. Получите список многокомпонентных загрузок s3Client.listMultipartUploads(allMultipartUploadsRequest); для uploadId and keyName> Получите список частей для каждого uploadIdlistParts(listPartsRequest)> Получите сводный список частей getParts()> Из Part summarygetETag() и getPartNumber()

Nikhil 21.12.2018 06:24

@Nikhil Круто, это действительно то, что я искал, спасибо. Отправьте это как ответ, и я приму его.

Dmytro Titov 21.12.2018 10:55
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
3
1 094
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Получить список выполняемых составных загрузок

MultipartUploadListing multipartUploadListing = 
s3Client.listMultipartUploads(new ListMultipartUploadsRequest(bucketName)); 

## for uploadId and keyName 

Получите список деталей для каждого uploadId и key

PartsListing partsListing = 
s3Client.listParts(new ListPartsRequest(bucketName, key, uploadId));

Получить список деталей

List<PartSummary> parts = partsListing.getParts();

Из PartSummary getETag () и getPartNumber ()

for(PartSummary part: parts)
{
  part.getETag();
  part.getPartNumber();
}

Пакет SDK Amazon S3

Клиент AmazonS3

Другие вопросы по теме