2012-04-08 7 views
7

J'essaie de dupliquer un fichier d'un compartiment à un autre mais je ne peux pas effectuer de couture pour voir le nouveau fichier dans le compartiment de destination.Dupliquer le fichier dans Amazon S3

Je reçois aucune erreur du tout ...

Demande:

enter image description here

Réponse:

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

Mais je continue à vérifier la Date de dernière modification Date de sur S3 et je ne peux trouver aucune information sur ce nouveau fichier, que ce soit je peux y accéder directement

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

Qu'est-ce que je fais mal?


Méthode:

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 vous n'avez pas vérifié l'aide officielle, cela peut en valoir la peine, il y a un exemple complet: http://docs.amazonwebservices.com/AmazonS3/latest/dev/CopyingObjectUsingNetSDK.html –

Répondre

6

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

Est où le fichier est. (Note double barre oblique // ..) Si vous frappez cette URL, vous voyez le fichier ico. C'est donc quelque chose à voir avec la barre oblique qui peut être ajoutée automatiquement par votre jeu d'outils.

+1

En d'autres termes, le paramètre de destination est en cours passé avec un caractère de barre oblique à l'avant. –

+0

merci, cela me rendait dingue depuis un certain temps, et j'ai commencé à penser à tout le reste et j'ai manqué la chose la plus simple ... C'est quand nous apprécions vraiment d'avoir StackOverflow: o) – balexandre

0

Pouvez-vous poster la demande (avec les en-têtes), capturé avec quelque chose comme Fiddler?

Les docs indiquent que le chemin source doit commencer par une barre oblique (c'est-à-dire entièrement qualifié), avez-vous essayé?

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

Peut-être que le cadre est-ce que pour vous, mais votre destination a un slash alors peut-être ...