Android から Amazon s3 に画像をアップロードできます。しかし、それらは常に非公開であり、誰もそれらを表示することはできません. Amazon s3 管理コンソールで公開する必要があります。アップロード中に画像の ACL を設定できません。
Android から Amazon s3 に画像をアップロードするには、次の 2 つの方法があることを知りました。
- 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 を設定するにはどうすればよいですか?