簡體   English   中英

無法替換Amazon S3存儲桶中的文件

[英]can't replace file in amazon s3 bucket

無法替換Amazon S3存儲桶中的文件

當我要將圖像上傳到amazon s3存儲桶時,它顯示如下錯誤: An item with the same key has already been added

我已經上傳了一個圖像文件,我想在需要時替換該圖像。 但這是不允許的。

我該如何解決?

我正在使用C#

 using (s3Client = Amazon.AWSClientFactory.CreateAmazonS3Client("key",   "secret key", Amazon.RegionEndpoint.USWest2))
            {
                var stream2 = new System.IO.MemoryStream();
                bitmap.Save(stream2, ImageFormat.Jpeg);

                stream2.Position = 0;
                PutObjectRequest request2 = new PutObjectRequest();
                request2.InputStream = stream2;
                request2.BucketName = "ezcimassets";
                request2.CannedACL = S3CannedACL.PublicRead;
                fileName = webpage + ".jpeg";
                //fileName = Guid.NewGuid() + webpage + ".jpeg";)
                request2.Key = "WebThumbnails/" + fileName;

                Amazon.S3.Model.PutObjectResponse response = s3Client.PutObject(request2);

            }

提前致謝

該行必須更改為

request2.CannedACL = S3CannedACL.PublicReadWrite

您可以檢查具有該鍵的對象是否已經存在,如果存在,則將其刪除:

public bool Exists(string fileKey, string bucketName)
{
        try
        {
            response = _s3Client.GetObjectMetadata(new GetObjectMetadataRequest()
               .WithBucketName(bucketName)
               .WithKey(key));

            return true;
        }

        catch (Amazon.S3.AmazonS3Exception ex)
        {
            if (ex.StatusCode == System.Net.HttpStatusCode.NotFound)
                return false;

            //status wasn't not found, so throw the exception
            throw;
        }
}

public void Delete(string fileKey, string bucketName)
{
    DeleteObjectRequest request = new DeleteObjectRequest();
    request.BucketName = bucketName;
    request.Key        = fileKey;
    client.DeleteObject(request);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM