Android学习-通过Cognito(PoolId)认证上传文件到S3

221 阅读1分钟

引入库

implementation 'com.amazonaws:aws-android-sdk-core:2.6.19'
implementation 'com.amazonaws:aws-android-sdk-s3:2.6.19'
implementation 'com.amazonaws:aws-android-sdk-ddb:2.6.19'
implementation 'com.amplifyframework:aws-auth-cognito:1.37.2'
implementation 'com.amplifyframework:core:1.37.2'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
fun uploadImageToS3(file:File){
    var cognitoCaching = CognitoCachingCredentialsProvider(this.context,  "cn-north-1:XXX", Regions.CN_NORTH_1)
    var configuration = ClientConfiguration()
    configuration.connectionTimeout = 50000
    configuration.socketTimeout = 300000

    var s3: AmazonS3 = AmazonS3Client(cognitoCaching, configuration)

    var transferUtility = TransferUtility.builder().s3Client(s3).context(context).build()
    var len = file.length()
    var transferObserver = transferUtility.upload("XXX", file.name, file)

    transferObserver.setTransferListener(object :TransferListener{
        override fun onStateChanged(id: Int, state: TransferState?) {
            Log.i("onStateChanged", "$state")
        }
        override fun onProgressChanged(id: Int, bytesCurrent: Long, bytesTotal: Long) {
            Log.i("onProgressChanged", "$bytesCurrent")
        }
        override fun onError(id: Int, ex: Exception?) {
            Log.i("onError", "$ex")
        }
    })
}