AWS S3通过android上传:将文件设置为公共默认值

时间:2016-08-03 11:33:01

标签: android amazon-web-services amazon-s3

正如标题所述,我希望用户将图像上传到我的AWS S3存储桶

我希望将这些图片公之于众。

公开的想法应该是其中一个元素,但实际上它们不是......

有没有办法将上传的文件设置为公共默认设置?

1 个答案:

答案 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
                    );

一些相关问题: