Я пытаюсь реализовать многостраничную загрузку на Java, следуя этому примеру: https://docs.aws.amazon.com/AmazonS3/latest/dev/llJavaUploadFile.html
Но моя настоящая задача немного сложнее: мне нужно поддерживать возобновление в случае, если приложение было закрыто во время загрузки. Кроме того, я не могу использовать TransferManager - мне нужно использовать низкоуровневый API по определенной причине.
Код там довольно простой, но проблема связана с частью List<PartETag> partETags. При завершении возобновленной загрузки мне необходимо иметь эту коллекцию, предварительно заполненную в процессе загрузки. И, очевидно, если я пытаюсь завершить загрузку после перезапуска приложения, у меня больше нет этой коллекции.
Итак, вопрос: как мне завершить возобновленную загрузку? Можно ли получить List<PartETag> partETags с сервера через какой-нибудь API? У меня есть только объект MultipartUpload.
Мой ответ будет работать только в том случае, если многостраничная загрузка все еще продолжается. Получите список многокомпонентных загрузок s3Client.listMultipartUploads(allMultipartUploadsRequest); для uploadId and keyName> Получите список частей для каждого uploadIdlistParts(listPartsRequest)> Получите сводный список частей getParts()> Из Part summarygetETag() и getPartNumber()
@Nikhil Круто, это действительно то, что я искал, спасибо. Отправьте это как ответ, и я приму его.




Получить список выполняемых составных загрузок
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();
}
Существуют API-интерфейсы для перечисления составных загрузок и составных частей загрузки.