恢复S3分段上传:PartETag

时间:2018-12-13 15:14:42

标签: java amazon-s3 streaming

我正在按照以下示例尝试用Java实现分段上传:https://docs.aws.amazon.com/AmazonS3/latest/dev/llJavaUploadFile.html

但是我的实际任务要复杂一些:如果需要在上载期间关闭应用程序,我需要支持恢复。另外,我不能使用TransferManager-出于特殊原因,我需要使用低级API。

那里的代码非常简单,但是问题来自List<PartETag> partETags部分。在完成恢复的上传的定稿时,我需要拥有此收藏,该收藏先前已在上传过程中填写。而且,显然,如果我尝试在应用程序重新启动后完成上传,则我将不再有该集合。

问题是:如何确定恢复的上传?是否可以使用某些API从服务器获取List<PartETag> partETags?我只有一个MultipartUpload对象。

1 个答案:

答案 0 :(得分:2)

获取正在进行的分段上传列表

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

## for uploadId and keyName 

获取每个uploadIdkey的零件列表

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();
}

Amazon S3 SDK Package

AmazonS3 client