【问题标题】:AWS S3 upload via android : setting the file to be public for defaultAWS S3 通过 android 上传:将文件设置为默认公开
【发布时间】:2016-08-03 11:33:01
【问题描述】:

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

我希望将图像公开。

认为公开应该是元数据之一,但实际上它们不是......

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

【问题讨论】:

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


    【解决方案1】:

    要使用 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
                        );
    

    一些相关问题:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多