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

Eba*_*har 0 android amazon-s3 amazon-web-services awss3transferutility

我一直在尝试将文件上传到s3存储桶.但该文件永远不会公开查看.我必须手动将存储桶中的文件/文件夹公开(对于每次上传)才能查看.

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

var*_*jsi 10

是的,对于那些正在使用TransferUtility的人来说,使用下面的方法使用android中的TransferUtility 上传任何公共可读形式的文件非常容易,

transferUtility.upload(String bucketName,String key,File file,CannedAccessControlList cannedAcl)
Run Code Online (Sandbox Code Playgroud)

例:

transferUtility.upload("MY_BUCKET_NAME","FileName",your_file,CannedAccessControlList.PublicRead);
Run Code Online (Sandbox Code Playgroud)

  • 你好@HardikJoshi,我在我的项目中使用以下库, - 编译 'com.amazonaws:aws-android-sdk-core:2.2.+' - 编译 'com.amazonaws:aws-android-sdk-s3:2.2.+ ' - 编译 'com.amazonaws:aws-android-sdk-ddb:2.2.+' 并且 TransferUtility 类中有四种方法用于上传文件,如果您也使用 ObjectMetadata 作为参数,则可以传递“new ObjectMetadata( )”在第四个参数中。 (2认同)

Mar*_*k B 5

要默认情况下公开存储桶中的所有对象,请查看此问题此问题的答案.

要在通过Android上传每个文件时指定每个文件的公共访问权限,请按以下方式设置ACL PutObjectRequest:

PutObjectRequest putObjectRequest = new PutObjectRequest()
    .withCannedAcl(CannedAccessControlList.PublicRead)
Run Code Online (Sandbox Code Playgroud)

此时看起来您不能一步设置ACL TransferUtility:https://github.com/aws/aws-sdk-android/issues/63

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

s3client.setObjectAcl(bucketName, keyName, CannedAccessControlList.PublicRead);
Run Code Online (Sandbox Code Playgroud)