c# - 在 .NET 中使用 S3 存储

标签 c# .net 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();
}

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

目前我的网络配置中只有一个 URL,如 https://s3.amazonaws.com/<MyBucketName>/然后当我需要显示图像时,我获取该字符串并使用我存储在代表上传文件的数据库中的对象中的键。 有更好的方法吗?

它附带的所有示例都没有真正解决这种用法。而且文档不在线,我不知道如何在安装 SDK 后获取它,尽管遵循了 Amazon 上的说明。

最佳答案

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

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

关于c# - 在 .NET 中使用 S3 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8585477/

相关文章:

.net - 在.NET Core RC2中构建.exe文件

c# - WinForms:如何检查 C# 文本框中的最少字符数?

amazon-web-services - AWS CloudFormation 与 Web 控制台?

amazon-web-services - 更好的初始化

amazon-web-services - 使用 s3-dist-cp 跨 AWS 账户复制 S3 文件

c# - 如何在服务器端验证我的自定义 Oauth2 访问 token

java - 是否可以使用分形来计算软件的复杂性?

c# - 3D 场景中的 3D 场景

c# - 如何使用 XmlSerializer 使用 DefaultValueAttribute 序列化属性?

c# - 如何将命令行参数传递给 docker run 并打印它?