मैंने इस का पालन करके एक टेस्टिंग-बकेट (सार्वजनिक एक्सेस चालू) बनाया है। अब मैं पाइथन लिपि के साथ उपरोक्त लिंक में दी गई विधि का उपयोग करके सफलतापूर्वक अपलोड करने में सक्षम हूं लेकिन मैं कोटलिन ऐप से ऐसा करने में सक्षम नहीं हूं।

पायथन कोड:

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")

कोटलिन कोड:

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.mp3 println(transferObserver.bytesTotal) -> 4750

कृपया मुझे बताएं कि मैं यहां क्या गलत कर रहा हूं।

1
Sumit Jangra 26 पद 2019, 14:20

1 उत्तर

यह समाधान काम करता है

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)
        }
    }
0
Sumit Jangra 27 पद 2019, 08:29
चूंकि यह समाधान जावा में बहिष्कृत है, मैं अभी भी प्रश्न में प्रस्तुत समाधान में सुधार की तलाश में हूं?
 – 
Sumit Jangra
27 पद 2019, 08:42