【问题标题】:Kotlin - get Firebase Image DownloadUrl returns "com.google.android.gms.tasks.zzu"Kotlin - 获取 Firebase Image DownloadUrl 返回“com.google.android.gms.tasks.zzu”
【发布时间】:2020-04-28 22:49:41
【问题描述】:

我正在尝试通过使用 Compressor 库创建两个文件夹来将图像上传到实时 Firebase 数据库,并且需要显示带有用户名的信使之类的图像,但由于 url 问题我无法显示图像

            var filePath = mStorageRef!!.child("chat_profile_images")
                .child(userId + ".jpg")

            //Create another directory for thumbimages ( smaller, compressed images)
            var thumbFilePath = mStorageRef!!.child("chat_profile_images")
                .child("thumbs")
                .child(userId + ".jpg")


            filePath.putFile(resultUri)
                .addOnCompleteListener{
                        task: Task<UploadTask.TaskSnapshot> ->
                    if (task.isSuccessful) {

                        //Let's get the pic url
                        var donwloadUrl = task.result?.storage?.downloadUrl.toString()

                        Log.d(TAG, "Profilepic link: $donwloadUrl")

                        //Upload Task
                        var uploadTask: UploadTask = thumbFilePath
                            .putBytes(thumbByteArray)

                        uploadTask.addOnCompleteListener{
                                task: Task<UploadTask.TaskSnapshot> ->
                            var thumbUrl = task.getResult()?.storage?.downloadUrl.toString()

                            Log.d(TAG, "Profilepic link: $thumbUrl")

我试图改变 downloadUrl

filepath.downloadUrl.toString
thumbFilePath.downloadUrl.toString

但是这两个值都得到“com.google.android.gms.tasks.zzu”

我也尝试过改变

task.result.sessionurl.downloadUrl.toString

对于这个,我得到的是 downloadUrl,但不是我的问题的完整解决方案,因为我仍然无法显示图像,我需要获取 thumbUrl downloadUrl

【问题讨论】:

    标签: kotlin firebase-storage


    【解决方案1】:

    您的误解与 this question 中的完全相同且非常常见,但它是在 java 中。您应该follow the documentation here 了解获得getDownloadUrl 的工作原理。从链接的 API 文档中可以看出,它不是一个属性 getter,它实际上是一个返回 Task&lt;Uri&gt; 的方法,它跟踪您想要的 URL 的异步获取,就像上传任务一样:

    filePath.downloadUrl
    .addOnSuccessListener { urlTask ->
        // download URL is available here
        val url = urlTask.result.toString()
    }.addOnFailureListener { e ->
        // Handle any errors
    }
    

    这只有在上传完全完成后才有效。

    【讨论】:

      【解决方案2】:

      上传后获取下载链接的正确方法

      here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-09
        • 2020-10-13
        • 1970-01-01
        • 1970-01-01
        • 2020-07-17
        • 2018-05-26
        • 2018-11-04
        • 2018-11-18
        相关资源
        最近更新 更多