0

我正在使用 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 的应用程序

4

2 回答 2

4

在文件上传期间设置适当的 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 存储桶公共访问注意事项

此外,您可以下载适用于 Amazon S3 的 Explorer(例如适用于 Amazon S3的 CloudBerry Explorer),您可以为您的存储桶分配适当的权限。

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

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

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

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

例如。

于 2012-12-19T10:34:13.070 回答
1

您是否尝试过以下方法:

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

编辑:

你看过这里吗: How to set the permissions on files at the time of Upload through Amazon s3 API

和这里:

如何在 S3 上设置存储桶的 ACL?

它可能会引导您朝着正确的方向前进

于 2012-12-19T10:31:27.580 回答