gpt4 book ai didi

android - 从 kotlin 应用程序在 s3 上上传音频文件

转载 作者:行者123 更新时间:2023-11-30 04:54:25 31 4
gpt4 key购买 nike

我已经按照 this 创建了一个测试桶(公开访问) .现在我可以使用上面链接中给出的方法和 python 脚本成功上传,但我无法从 Kotlin 应用程序执行相同的操作。

Python代码:

import boto3
from botocore.client import Config

ACCESS_KEY_ID = ********
ACCESS_SECRET_KEY = ***********
BUCKET_NAME = ********

data = open('bitmoji.png', 'rb')
data = open('b_f_a0008.wav', 'rb')

s3 = boto3.resource(
's3',
aws_access_key_id=ACCESS_KEY_ID,
aws_secret_access_key=ACCESS_SECRET_KEY,
config=Config(signature_version='s3v4')
)
s3.Bucket(BUCKET_NAME).put_object(Key='b_f_a0008.wav', Body=data)

print ("Done")

Kotlin 代码:

private fun upload() {
val s3Client = AmazonS3Client(BasicAWSCredentials(awsAccessKey, awsSecretKey))
s3Client.setRegion(Region.getRegion(Regions.US_EAST_2))

val transferUtility = TransferUtility.builder()
.context(context)
.awsConfiguration(AWSMobileClient.getInstance().configuration)
.s3Client(s3Client)
.build()

val transferObserver = transferUtility.upload(awsBucketName, "test.mp3", File(filePath))

transferObserver.setTransferListener(object : TransferListener {
override fun onProgressChanged(id: Int, bytesCurrent: Long, bytesTotal: Long) {
activity!!.runOnUiThread {
activity!!.showToast(Constants.TOAST_UPLOAD_SUCCESS + bytesTotal.toString())
}
}

override fun onStateChanged(id: Int, state: TransferState?) {
activity!!.runOnUiThread {
activity!!.showToast(Constants.TOAST_UPLOAD_SUCCESS + state?.name)
}
}

override fun onError(id: Int, ex: Exception?) {
activity!!.runOnUiThread {
activity!!.showToast(Constants.TOAST_EXCEPTION + ex?.message)
}
}
})
}

println(transferObserver.absoluteFilePath) ->/storage/emulated/0/26-Dec-2019 4:22:49 PM.mp3println(transferObserver.bytesTotal) -> 4750

请让我知道我在这里做错了什么。

最佳答案

这个解决方案有效

private fun uploadToS3() {
val credentials = BasicAWSCredentials(awsAccessKey, awsSecretKey)
val transferManager = TransferManager(credentials)
val upload = transferManager.upload(awsBucketName, filename, File(filePath))
val uploadResult = upload.waitForUploadResult()

while (!upload.isDone){
val bytesTransferred = upload.progress.bytesTransferred
println(bytesTransferred.toString())
Thread.sleep(200)
}
}

关于android - 从 kotlin 应用程序在 s3 上上传音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59487701/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com