Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private fun uploadFileToS3Bucket(filePath: String, credential: AwsCredentialResponse): Maybe<String> {
- // from blog: http://blog.mallow-tech.com/2019/01/how-to-upload-files-from-an-android-app-to-aws-s3/
- return Maybe.create { emitter ->
- TransferNetworkLossHandler.getInstance(context)
- val awsCredential = BasicAWSCredentials(
- credential.credentials.accessKeyId,
- credential.credentials.secretAccessKey)
- val s3Client = AmazonS3Client(awsCredential, getRegion(Regions.EU_WEST_1))
- val file = File(filePath)
- val transferUtility = TransferUtility.builder().s3Client(s3Client).context(context).build()
- val transferObserver: TransferObserver = transferUtility.upload(
- credential.bucket,
- credential.key,
- file,
- CannedAccessControlList.PublicRead
- )
- transferObserver.setTransferListener(object : TransferListener {
- override fun onStateChanged(id: Int, state: TransferState?) {
- when(state) {
- TransferState.IN_PROGRESS -> {
- }
- TransferState.COMPLETED -> {
- }
- TransferState.FAILED -> {
- }
- else -> {
- }
- }
- }
- override fun onProgressChanged(
- id: Int,
- bytesCurrent: Long,
- bytesTotal: Long) {
- if(bytesCurrent == bytesTotal) {
- emitter.onSuccess(
- "${credential.bucket}/${session.user!!.uid}/files" +
- "${key}.pdf")
- }
- }
- override fun onError(id: Int, e: Exception) {
- emitter.onError(e)
- }
- })
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment