2011-12-21 71 views
5

我正在使用AWS.Net上传用户内容(图像)并将它们显示在我的网站上。这是我的代码看起来像目前的上传:在.NET中使用S3存储

using (client = Amazon.AWSClientFactory.CreateAmazonS3Client()) 
    { 
     var putObjectRequest = new PutObjectRequest 
     { 

      BucketName = bucketName, 
      InputStream = fileStream, 
      Key = fileName, 
      CannedACL = S3CannedACL.PublicRead, 
      //MD5Digest = md5Base64, 
      //GenerateMD5Digest = true, 
      Timeout = 3600000 //1 Hour 
     }; 

     S3Response response = client.PutObject(putObjectRequest); 
     response.Dispose(); 
} 

请告诉我存放的路径,这些文件的最好方法?有没有办法从响应中获取我的文件的链接?

目前我只是有一个网址,我webconfig像https://s3.amazonaws.com/<MyBucketName>/,然后当我需要证明我把这个字符串的图像,并使用从我存储在表示上载的文件数据库对象的关键。 有没有更好的方法来做到这一点?

所有与它一起的例子并没有真正解决这种用法。尽管遵循亚马逊的指示,但文档不在线,并且在安装SDK后我不知道如何获得它。

+0

只需+1代码示例!不管存储桶默认情况如何,S3/SDK在默认情况下默认为私有文件。我发现的所有其他示例显式设置使用传输实用程序的权限。输入流正是我所追求的! – winwaed 2013-09-25 22:50:42

回答

2

您在web.config中存储路径(包括存储桶名称)的方法与我所做的相同,这非常棒。然后我将相对路径存储在各种数据库表中。

这种方法的好处是,它可以更容易迁移到不同的存储机制或CDN的如CloudFront的。我认为没有比这种方法更好的方法,因为S3文件驻留在不同的域上,或者如果您执行CNAME映射,则是子域名,因此您的.NET运行时不会在相同的域或子域下运行。

0

也有其直指其中S3Object是URI的响应的“位置”属性。