2012-04-08 32 views
7

Estoy intentando duplicar un archivo de un depósito a otro pero no puedo ver el nuevo archivo en el depósito de destino.Archivo duplicado en Amazon S3

estoy recibiendo ningún error en absoluto ...

Solicitud:

enter image description here

Respuesta:

<?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> 

pero guardo el control de la fecha de última modificación en S3 y no puedo encontrar ninguna información acerca de este nuevo archivo, ya sea que se puede acceder a él directamente

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

¿Qué estoy haciendo mal?


Método:

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

si no revisó la ayuda oficial, puede valer la pena, hay un ejemplo completo: http://docs.amazonwebservices.com/AmazonS3/latest/dev/CopyingObjectUsingNetSDK.html –

Respuesta

6

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

Es donde está el archivo. (Nota doble barra. // ..) Si tocas esta URL, ves el archivo ico. Así que tiene algo que ver con la barra diagonal, que puede ser agregada automáticamente por su conjunto de herramientas.

+1

En otras palabras, el parámetro de destino está siendo pasó con un personaje de barra en el frente. –

+0

gracias, esto me estaba volviendo loco durante un tiempo, y comencé a pensar en todo lo demás y me perdí lo más simple ... Aquí es cuando realmente apreciamos tener StackOverflow: o) – balexandre

0

Se puede publicar la solicitud (con cabeceras), capturado con algo como violinista?

El docs indica que la ruta de origen debe comenzar con una barra inclinada (es decir, completamente calificada), ¿lo ha intentado?

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

Tal vez el marco lo hace por usted, pero su destino tiene una barra inicial así que tal vez ...