2012-04-08 186 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 

也许框架确实是你的,但你的目的地有一个斜线,所以也许......