2012-04-08 151 views
7

我試圖將文件從一個存儲桶複製到另一個存儲器,但無法在目標存儲桶中看到新文件。亞馬遜S3中的重複文件

我得到沒有錯誤在所有...

請求:

enter image description here

響應:

<?xml version="1.0" encoding="UTF-8"?> 
<CopyObjectResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
    <LastModified>2012-04-08T11:26:36.000Z</LastModified 
    <ETag>&quot;a5f9084078981b64737b57dbf1735fcf&quot;</ETag> 
</CopyObjectResult> 

,但我一直檢查最後修改日期 S3上,我不能找到有關這個新文件的任何信息,無論是我可以直接訪問它

http://jk-v20.s3.amazonaws.com/PublicFiles/3ff28e21-4801-47c6-a6d0-e370706d303f_Content_Favicon.ico

我在做什麼錯?


方法:

public void DuplicateFileInCloud(string original, string destination) 
{ 
    try 
    { 
     CopyObjectRequest request = new CopyObjectRequest(); 

     if (original.StartsWith("http")) 
     { 
      // could be from other bucket, URL will show all data 
      // example: http://jk-v30.s3.amazonaws.com/PredefinedFiles/Favicons/002.ico 
      string bucket = getBucketNameFromUrl(original), // jk-v30 
        key = getKeyFromUrl(original);   // PredefinedFiles/Favicons/002.ico 

      request.WithSourceBucket(bucket); 
      request.WithSourceKey(key); 
     } 
     else 
     { 
      // same bucket: copy/paste operation 
      request.WithSourceBucket(this.bucketName); 
      request.WithSourceKey(original); 
     } 

     request.WithDestinationBucket(this.bucketName); 
     request.WithDestinationKey(destination); 
     request.CannedACL = S3CannedACL.PublicRead; 

     using (AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(this.accessKey, this.secretAccessKey)) 
     { 
      S3Response response = client.CopyObject(request); 
      response.Dispose(); 
     } 
    } 
    catch (AmazonS3Exception s3Exception) 
    { 
     throw s3Exception; 
    } 
} 
+0

如果你沒有檢查官方幫助,它可能是值得的,有完整的例子:http://docs.amazonwebservices.com/AmazonS3/latest/dev/CopyingObjectUsingNetSDK.html – 2012-04-15 16:07:42

回答

6

http://jk-v20.s3.amazonaws.com//PublicFiles/3ff28e21-4801-47c6-a6d0-e370706d303f_Content_Favicon.ico

是文件所在。 (注意雙斜槓。// ..)如果你點擊這個Url,你會看到ico文件。所以它與引導斜槓有關,可能會由您的工具集自動添加。

+1

換句話說,目標參數是在前面傳遞一個斜槓字符。 – 2012-04-19 05:17:32

+0

謝謝,這讓我瘋狂了一段時間,並且我開始了其他事情,並且錯過了最簡單的事情......當我們真的很欣賞有StackOverflow時:o) – balexandre 2012-04-22 19:47:12

0

你能後的請求(有頭),喜歡的東西小提琴手捕獲?

docs表示源路徑應該以斜槓開始(即完全限定),您是否嘗試過?

x-amz-copy-source: /source_bucket/sourceObject 

也許框架確實是你的,但你的目的地有一個斜線,所以也許......