如何判断我的文件是否已使用其SDK从Amazon S3成功删除?

时间:2011-08-09 22:04:53

标签: c# amazon-s3 amazon

我使用以下代码从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);
        }
    }
}

1 个答案:

答案 0 :(得分:2)

This article discusses similar issue。通常,如果您的请求成功,则删除您的对象。请注意,由于最终的一致性,该对象不能保证立即消失。这就提出了如何确定第二个请求失败的问题?