如何使用 public 权限将 Android 文件上传到 S3 存储桶

How to upload an Android file to S3 bucket with public permission

我一直在尝试将文件上传到 s3 存储桶。但该文件永远不会 public 供查看。我必须在存储桶 public 中手动创建 files/folder(对于每次上传)才能查看。

有没有办法上传默认权限为 public 的 Android 文件(位图)以供查看。如果可能的话,我更愿意以编程方式执行此操作。我检查了 s3 文档,找不到任何有用的东西。

要使存储桶中的所有对象默认为 public,请查看 this question or 的答案。

要在通过 Android 上传文件时为每个文件指定 public 访问权限,请像这样在 PutObjectRequest 上设置 ACL:

PutObjectRequest putObjectRequest = new PutObjectRequest()
    .withCannedAcl(CannedAccessControlList.PublicRead)

目前看来不能用TransferUtility一步设置ACL:https://github.com/aws/aws-sdk-android/issues/63

因此,通过 TransferUtility 上传文件后,您需要执行以下操作:

s3client.setObjectAcl(bucketName, keyName, CannedAccessControlList.PublicRead);

是的,对于那些使用 TransferUtility 的人来说,这很容易, 使用以下方法上传 public 可读 形式的任何文件,使用 android,

中的 TransferUtility
transferUtility.upload(String bucketName,String key,File file,CannedAccessControlList cannedAcl)

示例:

transferUtility.upload("MY_BUCKET_NAME","FileName",your_file,CannedAccessControlList.PublicRead);