我使用以下代码从S3中删除文件。但是如何判断S3中文件的实际删除是否成功?
这些是成功时返回的标头:
的
响应标题:x-amz-id-2,值:|删除密钥|
响应标头:x-amz-request-id,值:CA3F42D7F3B9215E
响应标题:日期,值:星期二,09年8月9日
并没有成功:
的
响应标题:x-amz-id-2,值:fM3 / |密钥已删除| + p + F2Adu1Rr3b2k
Amazon S3删除:响应标头:x-amz-request-id,值:0CFB9E7882F01BA3
回复标题:日期,价值:星期二,2011年8月9日21:23:12 GMT
响应标题:服务器,值:AmazonS3中文
标头之间的唯一区别(除了不同的请求ID之外)是从S3返回的额外行,其具有服务器,值:AmazonS3值但我不知道这是否是我可靠的方式来确定是否文件已从S3
如何修改C#代码告诉我删除是否成功?
感谢。
static void DeletingAnObject()
{
try
{
DeleteObjectRequest request = new DeleteObjectRequest();
request.WithBucketName(bucketName)
.WithKey(keyName);
using (DeleteObjectResponse response = client.DeleteObject(request))
{
WebHeaderCollection headers = response.Headers;
foreach (string key in headers.Keys)
{
Console.WriteLine("Response Header: {0}, Value: {1}", key, headers.Get(key));
}
}
}
catch (AmazonS3Exception amazonS3Exception)
{
if (amazonS3Exception.ErrorCode != null &&
(amazonS3Exception.ErrorCode.Equals("InvalidAccessKeyId") ||
amazonS3Exception.ErrorCode.Equals("InvalidSecurity")))
{
Console.WriteLine("Please check the provided AWS Credentials.");
Console.WriteLine("If you haven't signed up for Amazon S3, please visit http://aws.amazon.com/s3");
}
else
{
Console.WriteLine("An error occurred with the message '{0}' when deleting an object", amazonS3Exception.Message);
}
}
}
答案 0 :(得分:2)
This article discusses similar issue。通常,如果您的请求成功,则删除您的对象。请注意,由于最终的一致性,该对象不能保证立即消失。这就提出了如何确定第二个请求失败的问题?