Resume S3 multipart upload: PartETag

Dmytro Titov :

I'm trying to implement multipart upload in Java, following this sample: https://docs.aws.amazon.com/AmazonS3/latest/dev/llJavaUploadFile.html

But my actual task is a bit more complicated: I need to support resuming in case application was shut down during uploading. Also, I can't use TransferManager - I need to use low-level API for particular reason.

The code there is pretty straight-forward, but the problem comes with List<PartETag> partETags part. When finalizing resumed upload, I need to have this collection, previously filled during the upload process. And, obviously, if I'm trying to finalize upload after application restart, I don't have this collection anymore.

So the question is: how do I finalize resumed upload? Is it possible to obtain List<PartETag> partETags from the server using some API? What I have is only a MultipartUpload object.

Nikhil :

Get the list of multipart uploads in progress

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

## for uploadId and keyName 

Get the list of parts for each uploadId and key

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

Get the List of part summary

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

From PartSummary getETag() and getPartNumber()

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

Amazon S3 SDK Package

AmazonS3 client

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=70813&siteId=1