2011-04-01 102 views
2

我使用直接从亚马逊的.NET API上传一些文件到S3。如何使用.NET API为AWS S3上传生成我的请求签名?

但是,我得到异常消息:The request signature we calculated does not match the signature you provided. Check your key and signing method.

我的代码如下:

AmazonS3 s3Client = AWSClientFactory.CreateAmazonS3Client("myaccessid","mysecretid"); 
    List<string> allFileNames = ProcessFiles(@"c:\Dev\pktest\"); 
    foreach (string file in allFileNames) 
    {     

     PutObjectRequest putObjectRequest = new PutObjectRequest 
     { 
      BucketName = "rhspktest", 
      FilePath = file, 
      Key = file, 
      Timeout = 3600000      
     }; 

     try 
     { 
      using (S3Response response = s3Client.PutObject(putObjectRequest)) { }; 
     } 
     catch (AmazonS3Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 

      Console.WriteLine(file); 

     } 
     Console.Read(); 

有什么立竿见影我做错了吗?

ProcessFiles方法只是返回该目录中的文件名列表。

回答

11

ProcessFiles是否只返回文件名或完整路径?无论如何,FilePathKey应该被设置为相同的东西。

FilePath应该设置为要上传的本地文件的完整路径。例如c:\Dev\pktest\myfile.txt

Key是存储在S3上的文件的名称。例如myfile.txt。或者如果你想保持相同的路径结构:Dev/pktest/myfile.txt(注意正斜杠)

+1

是的,你是对的。我认为这是造成这个问题的反斜杠。 – 2011-04-03 11:00:23

相关问题