我可以将图像从 Android 上传到 Amazon s3。但它们始终是私有的,没有人可以展示它们。我必须在 Amazon s3 管理控制台上公开它。上传图片时无法设置 ACL。
我了解到,有两种方法可以将图像从 Android 上传到 Amazon s3:
- 使用 PutObjectRequest
- 使用 TransferUtility.upload()
我都试过了。如果我更喜欢 PutObjectRequest,我必须使用 AsyncTask 或其他线程。因为 PutObjectRequest 在主线程上运行。但我不想使用 AsyncTask 或其他线程。
我想使用 TransferUtility,因为它不在主线程上运行,在服务上工作,所以我不必使用 AsyncTask 或其他线程。我也可以轻松跟踪进度和转移状态。此外,TransferUtility 比 PubObjectRequest 更新。但是问题来了:我不知道如何在将对象上传到 s3 时或之前为其设置 ACL。我试过了:
s3Client.setObjectAcl("myBucket", "steve_jobs.jpg", CannedAccessControlList.PublicRead);
但它返回“主线程上的网络”错误。所以我需要使用 AsyncTask 或其他线程。但我不想使用 AsyncTask 或其他线程。使用 TransferUtility 上传对象时如何为对象设置 ACL?