我正在使用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的应用程序
答案 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)
您是否尝试过以下操作:
修改强>
你看看这个: 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?
它可能会指导你朝着正确的方向发展