正如标题所述,我希望用户将图像上传到我的AWS S3存储桶
我希望将这些图片公之于众。
公开的想法应该是其中一个元素,但实际上它们不是......
有没有办法将上传的文件设置为公共默认设置?
答案 0 :(得分:3)
要使用Android SDK将S3对象设置为公开,您可以将广告管理政策附加到您的广告资源中,例如:
{
"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
);
一些相关问题: