Загрузка файла как общедоступного на S3 в Kotlin Android - PullRequest
0 голосов
/ 14 октября 2018

Я разрабатываю приложение для Android с использованием Kotlin.Я пытаюсь загрузить файл в корзину AWS S3.Я мог бы успешно загрузить файл в Bucket.Но проблема в том, что файл загружен как частный.Вместо этого я хочу, чтобы он был загружен и опубликован.

Это мой код

private fun uploadPhotoToS3(path : String){
        doAsync {
            AWSMobileClient.getInstance().initialize(applicationContext).execute()

            val s3Client = AmazonS3Client(AWSMobileClient.getInstance().credentialsProvider)
            val transferUtility = TransferUtility.builder()
                    .context(applicationContext)
                    .awsConfiguration(AWSMobileClient.getInstance().configuration)
                    .s3Client(s3Client)
                    .build()
            val uploadObserver = transferUtility.upload("public/testing.jpg", File(path))

            uploadObserver.setTransferListener(object : TransferListener{
                override fun onStateChanged(id: Int, state: TransferState?) {
                    if(TransferState.COMPLETED == state){
                        Log.i("UPLOAD_STATE", "COMPLETED")
                    } else {
                        Log.i("UPLOAD_STATE", "CHANGED")
                    }
                }

                override fun onProgressChanged(id: Int, bytesCurrent: Long, bytesTotal: Long) {

                }

                override fun onError(id: Int, ex: Exception?) {
                    Log.i("UPLOAD_ERROR", "Unable to upload file")
                }
            })
        }
    }

Как я могу изменить его, чтобы сделать файл общедоступным?

Ответы [ 3 ]

0 голосов
/ 15 октября 2018

Ссылка: https://github.com/aws/aws-sdk-android/blob/master/aws-android-sdk-s3/src/main/java/com/amazonaws/mobileconnectors/s3/transferutility/TransferUtility.java#L476

val uploadObserver = transferUtility.upload("public/testing.jpg", File(path), CannedAccessControlList.PublicRead)

Дополнительно

Я попробовал вышеуказанное решение.Но это возвращало ошибку 403.Вместо использования поставщика учетных данных cognito мне пришлось использовать базовый поставщик учетных данных AWS с ключом доступа и секретным ключом.

0 голосов
/ 18 октября 2018

Относительно ошибки «Отказано в доступе»: попробуйте использовать aws-sdk-android-s3 2.7.3 вместо самой последней 2.7.5.Проблема отслеживается здесь https://github.com/aws/aws-sdk-android/issues/548

0 голосов
/ 15 октября 2018
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...