将文件作为公共文件上传到Kotlin Android中的S3
我正在使用Kotlin开发一个Android应用程序。我正在尝试将文件上载到AWS S3存储桶。我可以成功地将文件上传到Bucket。但问题是该文件是作为私有文件上传的。相反,我希望它被上传并设置为公共的 这是我的密码将文件作为公共文件上传到Kotlin Android中的S3,android,amazon-web-services,amazon-s3,kotlin,Android,Amazon Web Services,Amazon S3,Kotlin,我正在使用Kotlin开发一个Android应用程序。我正在尝试将文件上载到AWS S3存储桶。我可以成功地将文件上传到Bucket。但问题是该文件是作为私有文件上传的。相反,我希望它被上传并设置为公共的 这是我的密码 private fun uploadPhotoToS3(path : String){ doAsync { AWSMobileClient.getInstance().initialize(applicationContext).execu
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")
}
})
}
}
如何修改它以将文件设置为公用?至。参考:
附加的
我尝试了上述解决方案。但它返回403错误。我没有使用cognito凭据提供程序,而是将AWS基本凭据提供程序与访问密钥和密钥一起使用。关于“拒绝访问”错误:尝试使用
AWS-sdk-android-s3 2.7.3
而不是最新的2.7.5
。这个问题在这里被跟踪但是,我怎么可能在科特林做到呢?甚至找不到它的方法或参数。我的答案链接到Android.val uploadObserver=transferUtility.upload的文档(“public/testing.jpg”,File(path),cannedAccessController.PublicRead)Ref:收到此错误。10-15 23:19:19.599 29558-29833/com.thegoodyard.waiyanhein.thegoodyard E/UploadTask:在多部分上传过程中遇到的错误:4由于访问被拒绝(服务:Amazon S3;状态代码:403;错误代码:AccessDenied;请求ID:2348F3C66BE0BAB3)com.amazonaws.services.S3.model.amazons3异常:访问被拒绝(服务:Amazon S3;状态代码:403;错误代码:AccessDenied;请求ID:2348F3C66BE0BAB3),S3扩展请求ID:OuzolfzNeNAHvlDq3SdeU8FoYjy7vqPRDB3eVMcFdFoLQn+TZC3GFGJI5LKLWXAESTpa2OxPOK=–这个答案解决了您的问题吗?您有办法设置访问控制,以及您的新问题(与此问题无关)正在处理权限设置不正确。出现此错误。10-15 23:19:19.599 29558-29833/com.thegoodyard.waiyanhein.thegoodyard E/UploadTask:在多部分上载过程中遇到错误:4由于访问被拒绝(服务:Amazon S3;状态代码:403;错误代码:AccessDenied;请求ID:2348F3C66BE033)com.amazonaws.services.s3.model.amazons3异常:访问被拒绝(服务:Amazon s3;状态代码:403;错误代码:AccessDenied;请求ID:2348F3C66BE0BAB3),s3扩展请求ID:OuzolfzNeNAHvlDq3SdeU8FoYjy7vqPRDB3eVMcFdFoLQn+tZC3GfGjI5lKlwxaestkPA2oXpOk=
val uploadObserver = transferUtility.upload("public/testing.jpg", File(path), CannedAccessControlList.PublicRead)