Как установить ACL для объекта при загрузке его в Amazon s3?

Я могу загрузить изображения с Android на Amazon S3. Но они всегда приватны, никто не может их отобразить. Я должен сделать это общедоступным на консоли управления Amazon s3. я не могу установить ACL для изображения при загрузке.

Я узнал, что есть два способа загрузить изображение в Amazon s3 с Android:

используя PutObjectRequestиспользуя TransferUtility.upload ()

Я попробовал оба. если я предпочитаю PutObjectRequest, я должен использовать AsyncTask или другой поток. Потому что PutObjectRequest работает в основном потоке. Но я не хочу использовать AsyncTask или другой поток.

я хочу использовать TransferUtility, потому что он не работает в основном потоке, работает в сервисе, поэтому мне не нужно использовать AsyncTask или другой поток. Также я могу легко отслеживать прогресс и состояние передачи. Кроме того, TransferUtility является более новым, чем PubObjectRequest. Но проблема возникает здесь: я не знаю, как установить ACL для объекта во время или до загрузки его на s3. я попробовал это:

s3Client.setObjectAcl("myBucket", "steve_jobs.jpg", CannedAccessControlList.PublicRead);

но он вернул ошибку "сеть в главном потоке". Поэтому мне нужно использовать AsyncTask или другой поток. Но я не хочу использовать AsyncTask или другой поток. Как я могу установить ACL для объекта при загрузке его с помощью TransferUtility?

Ответы на вопрос(1)

Ваш ответ на вопрос