我正在尝试使用Amazon S3 Java API实现移动操作。
我遇到的问题是CopyObjectResult
方法返回的AmazonS3Client.copyObject
对象似乎没有关于操作是否成功的明确指示。
鉴于在此操作之后我将删除文件,我想确保操作成功。
有什么建议吗?
答案 0 :(得分:3)
这就是我最终要做的事情,
def s3 = createS3Client(credentials)
def originalMeta = s3.getObjectMetadata(originalBucketName, key)
s3.copyObject(originalBucketName, key, newBucketName, newKey)
def newMeta = s3.getObjectMetadata(newBucketName, newKey)
// check that md5 matches to confirm this operation was successful
return originalMeta.contentMD5 == newMeta.contentMD5
请注意,这是Groovy代码,但它与Java代码的工作方式非常相似。
我不想再进行两项额外的操作来检查元数据,所以如果有任何方法可以更有效地告诉我这一点。
答案 1 :(得分:1)
我很确定你可以使用CopyObjectResult对象的getETag method来确认它在创建后有一个有效的ETag,就像在CopyObjectRequest setETag方法中所做的那样。
getETag
public String getETag()
获取新对象的ETag值 是在关联的CopyObjectRequest中创建的。返回:ETag 新对象的值。另请参见:setETag(String)setETag
public void setETag(String etag)
设置新的ETag值 从关联的副本对象请求创建的对象。 参数:etag - 新对象的ETag值。也可以看看: getETag()
始终信任数据。
自从我几年前使用亚马逊PhP SDK做了类似的功能以来已经过去了一年,但它应该有用。
答案 2 :(得分:0)