C# 将S3存储与.NET一起使用
我正在使用AWS.Net上传用户内容(图像)并将其显示在我的网站上。这是我的上传代码当前的样子:C# 将S3存储与.NET一起使用,c#,.net,amazon-web-services,C#,.net,Amazon Web Services,我正在使用AWS.Net上传用户内容(图像)并将其显示在我的网站上。这是我的上传代码当前的样子: using (client = Amazon.AWSClientFactory.CreateAmazonS3Client()) { var putObjectRequest = new PutObjectRequest { BucketName = bucketName, InputStream = fileS
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();
}
存储这些文件路径的最佳方法是什么?有没有办法从回复中获取指向我的文件的链接?
目前我的网络配置中只有一个URL,如https://s3.amazonaws.com//
然后,当我需要显示图像时,我获取该字符串并使用存储在db中的对象的键,该对象表示上传的文件。
有更好的方法吗?
它附带的所有示例都没有真正解决这种用法。而且文档不是在线的,我不知道在安装SDK后如何访问它,尽管我遵循了Amazon上的说明。您在web.config中存储路径(包括存储桶名称)的方法与我相同,非常有效。然后,我将相对路径存储在各种数据库表中
这种方法的好处在于,它使迁移到不同的存储机制或CDN(如CloudFront)变得更容易。我认为没有比这种方法更好的方法了,因为如果您进行CNAME映射,S3文件驻留在不同的域或子域上,因此您的.NET运行时不会在同一个域或子域下运行 响应中还有一个“Location”属性,它直接指向S3Object所在的uri。代码示例中只有一个+1!S3/SDK在上传时似乎默认为私有文件,而与bucket默认值无关。我发现的所有其他示例都显式设置了transfer实用程序使用的权限。输入流正是我想要的!