我正在按照以下示例尝试用Java实现分段上传:https://docs.aws.amazon.com/AmazonS3/latest/dev/llJavaUploadFile.html
但是我的实际任务要复杂一些:如果需要在上载期间关闭应用程序,我需要支持恢复。另外,我不能使用TransferManager
-出于特殊原因,我需要使用低级API。
那里的代码非常简单,但是问题来自List<PartETag> partETags
部分。在完成恢复的上传的定稿时,我需要拥有此收藏,该收藏先前已在上传过程中填写。而且,显然,如果我尝试在应用程序重新启动后完成上传,则我将不再有该集合。
问题是:如何确定恢复的上传?是否可以使用某些API从服务器获取List<PartETag> partETags
?我只有一个MultipartUpload
对象。
答案 0 :(得分:2)
获取正在进行的分段上传列表
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();
}