在S3中使用S3存储

Jas*_*son 5 .net c# amazon-web-services

我正在使用AWS.Net上传用户内容(图像)并在我的网站上显示它们.这是我目前上传的代码:

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();
}
Run Code Online (Sandbox Code Playgroud)

什么是存储这些文件路径的最佳方法?有没有办法从响应中获取我的文件的链接?

目前我只是在我的webconfig中有一个URL,https://s3.amazonaws.com/<MyBucketName>/然后当我需要显示图像时,我接受该字符串并使用我存储在代表上传文件的数据库中的对象的密钥. 有一个更好的方法吗?

随附的所有示例都没有真正解决这种用法.虽然按照亚马逊上的说明操作,但我在安装SDK后不知道如何使用该文档.

Sha*_*rde 2

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

这种方法的好处是可以更轻松地迁移到不同的存储机制或 CDN(例如 CloudFront)。我认为没有比这种方法更好的方法了,因为如果您进行 CNAME 映射,S3 文件驻留在不同的域或子域中,因此您的 .NET 运行时不会在同一域或子域下运行。