【发布时间】:2016-08-03 11:33:01
【问题描述】:
正如标题所述,我希望用户将图像上传到我的 AWS S3 存储桶
我希望将图像公开。
认为公开应该是元数据之一,但实际上它们不是......
有没有办法将上传的文件设置为默认公开?
【问题讨论】:
标签: android amazon-web-services amazon-s3
正如标题所述,我希望用户将图像上传到我的 AWS S3 存储桶
我希望将图像公开。
认为公开应该是元数据之一,但实际上它们不是......
有没有办法将上传的文件设置为默认公开?
【问题讨论】:
标签: android amazon-web-services amazon-s3
要使用 Android SDK 将 S3 对象设置为公开,您可以将 Bucket Policy 附加到您的存储桶,例如:
{
"Version": "2012-10-17",
"Id": "Policy20160803001",
"Statement": [
{
"Sid": "Stmt20160803001",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::[BUCKET_NAME]/*"
}
]
}
使用这样的策略,给定存储桶中的所有对象都将是公共的。
或者,如果您不想公开存储桶中的所有对象,只公开使用您的 Android SDK 上传的对象,您可以使用:
AmazonS3 s3 = new AmazonS3Client(credentials);
s3.setObjectAcl(Constants.S3_BUCKET, key,CannedAccessControlList.PublicRead);
final TransferUtility transferUtility = new TransferUtility(s3, getActivity());
TransferObserver observer = transferUtility.upload(
Constants.S3_BUCKET, // S3 BUCKET TO UPLOAD FILE TO
key, // NAME OF THE FILE IN THE S3 BUCKET
file // FILE THAT WILL BE UPLOADED
);
一些相关问题:
【讨论】: