2012-04-08 2 views
7

Я пытаюсь дублировать файл из ведра в другой, но я не могу шов, чтобы увидеть новый файл в целевом ковше.Дубликат файла в Amazon 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 –

ответ

6

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

где файл. (Обратите внимание на двойную косую черту. // ..) Если вы нажмете этот URL, вы увидите файл ico. Таким образом, это связано с ведущей косой чертой, которая может автоматически добавляться вашим набором инструментов.

+1

Другими словами, параметр назначения с символом косой черты спереди. –

+0

спасибо, это заставило меня немного остудить, и я начал верить всему остальному и пропустил простейшую вещь ... Это когда мы действительно ценим StackOverflow: o) – balexandre

0

Вы можете разместить запрос (с заголовками), захваченный с чем-то вроде стельки?

docs указывает, что путь источника должен начинаться с косой черты (то есть полной), вы пробовали это?

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

Может быть, основа делает это для вас, но ваша цель имеет ведущую косую черту так, может быть ...

0

Код выглядит правильно, я использую нечто подобное в моем рабочем приложении.

Возможно, было полезно включить ведение журнала доступа к серверу на ваших ведрах s3, чтобы понять, что происходит за кулисами - http://docs.amazonwebservices.com/AmazonS3/latest/dev/ServerLogs.html.

Смежные вопросы