使对象在Amazon S3中可公开读取

时间:2012-12-19 10:26:32

标签: asp.net-mvc amazon-s3

我正在使用Amazon S3 sdk在云服务器上存储文件,我正在使用codeplex的threesharp(http://threesharp.codeplex.com)实现这一点,我已成功上传服务器上的文件,现在我必须下载它,为此我必须使用URL下载它,例如https://s3.amazonaws.com/MyBucket/Filename

我可以下载上传的文件,但它显示为空白,如果我上传文本文件,然后下载后它显示任何内容,与图像和其他文件相同。我已阅读Amazon S3文档,我必须使该对象公开可读(http://docs.amazonwebservices.com/AmazonS3/latest/gsg/OpeningAnObject.html)我不知道如何实现这一目标。 我如何完成下载功能? Threesharp项目是基于桌面的,我正在开发基于Web的应用程序

2 个答案:

答案 0 :(得分:3)

在文件上传期间设置正确的ACL:

例如:

AmazonS3 client = GetS3Client();
SetACLRequest request = new SetACLRequest();
request.BucketName = "my-new-bucket";
request.Key        = "hello.txt";
request.CannedACL  = S3CannedACL.PublicRead;
client.SetACL(request)

Amazon S3提供了一组丰富的机制,供您管理对存储桶和对象的访问。

检查详情:Amazon S3 Bucket Public Access Considerations

此外,您可以下载Amazon S3的资源管理器(例如CloudBerry Explorer for Amazon S3)&他们可以为您的桶分配适当的权限。

适用于Amazon S3的CloudBerry Explorer:数据访问功能:

  • 广告管理策略编辑器 创建和编辑用于管理对存储桶和对象的访问的条件规则。

  • ACL编辑器 通过设置“访问控制列表”来管理对任何对象的访问权限。 ACL也适用于S3存储桶内的所有“子对象”。

此外,您可以使用Amazon S3管理控制台执行相同的操作。

EG。

答案 1 :(得分:1)

您是否尝试过以下操作:

  1. 右键单击该对象,然后单击“公开”
  2. 选择对象并在权限部分选中打开/下载?
  3. 修改

    你看看这个: How to set the permission on files at the time of Upload through Amazon s3 API

    在这里:

    How to set a bucket's ACL on S3?

    它可能会指导你朝着正确的方向发展