【问题标题】:Resume S3 multipart upload: PartETag恢复 S3 分段上传:PartETag
【发布时间】:2018-12-21 18:40:47
【问题描述】:

我正在尝试在 Java 中实现分段上传,遵循此示例:https://docs.aws.amazon.com/AmazonS3/latest/dev/llJavaUploadFile.html

但我的实际任务有点复杂:我需要支持恢复,以防应用程序在上传过程中被关闭。另外,我不能使用TransferManager - 出于特殊原因我需要使用低级 API。

那里的代码非常简单,但问题出在List<PartETag> partETags 部分。在完成恢复上传时,我需要这个集合,之前在上传过程中填写。而且,显然,如果我试图在应用程序重新启动后完成上传,我就没有这个集合了。

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

【问题讨论】:

  • 有列出分段上传和分段上传部分的API。
  • 我的回答只有在分段上传仍在进行时才有效。获取s3Client.listMultipartUploads(allMultipartUploadsRequest); for uploadId and keyName 的分段上传列表 > 获取每个uploadId listParts(listPartsRequest) 的部分列表 > 获取部分摘要列表getParts() > 来自Part summary getETag()getPartNumber()
  • @Nikhil Cool,这正是我想要的,谢谢。将其发布为答案,我会接受。

标签: java amazon-s3 streaming


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-07-21
    • 1970-01-01
    • 2017-08-23
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    相关资源
    最近更新 更多