android - 如何使用 Amplify 从 Android 获取 AWS S3 中的对象 URL

标签 android amazon-web-services amazon-s3 kotlin

在我使用 Kotlin 的 Android 项目中,我使用 Amplify 将图像上传到 AWS S3。文件使用 transferUtility

上传
val transferUtility = TransferUtility.builder()
            .context(applicationContext)
            .awsConfiguration(AWSMobileClient.getInstance().configuration)
            .s3Client(AmazonS3Client(AWSMobileClient.getInstance()))
            .build()

    val file = File("path_to/file")
    val key = "public/propic/" + user.id+".jpg"
    val uploadObserver = transferUtility.upload(key,file)

uploadObserver.setTransferListener(object : TransferListener {

        override fun onStateChanged(id: Int, state: TransferState) {
            if (TransferState.COMPLETED === state) {
                Toast.makeText(this@UploadActivity, "File Uploaded", Toast.LENGTH_LONG).show()
            }
        }
}

文件正在完美上传到 AWS S3。上传文件后,我需要获取上传文件的对象 URL。这样我就可以使用对象 URL 从 S3 加载 ImageView 。

最佳答案

直接回答这个问题,S3 Bucket中对象的URL是

 https://BUCKET-NAME.s3.amazonaws.com/path/to/file

请注意,要以这种方式访问​​它,该对象必须是公开可用的。

关于android - 如何使用 Amplify 从 Android 获取 AWS S3 中的对象 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57988466/

相关文章:

java - android java类无法识别R文件

java - 亚马逊 AWS S3 桶递归提取

amazon-web-services - 从 s3a 读取文件以及 AWS Athena SDK (1.11+)

python - Flask & Boto3 `ValueError: Required parameter name not set` 访问资源

android - 如何在android studio中集成google meet

android - setPluginState 和 setPluginsEnabled

Ubuntu 11.04 上的 Android/Eclipse 安装 - aapt 和 adb 无法正常工作

python - AWS 默认区域未在 boto 中使用 env 变量进行设置

amazon-web-services - 在 AWS IOT 中发布二进制数据时未调用 AWS Lambda?

amazon-web-services - 如何实现对 AWS S3 存储桶的一次性写入票证?