Kotlin - получить Firebase Image DownloadUrl возвращает "com.google. android .gms.tasks.zzu" - PullRequest
0 голосов
/ 11 января 2020

Я пытаюсь загрузить изображения в базу данных Firebase в реальном времени, создав две папки с помощью библиотеки Compressor, и мне нужно отобразить изображение, например, мессенджер с именем пользователя, но я не могу отобразить изображение из-за проблемы с 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

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Правильный способ получения ссылки для скачивания после загрузки

здесь

0 голосов
/ 11 января 2020

У вас точно такое же и очень распространенное недоразумение, как в в этом вопросе , за исключением того, что в java. Вы должны следовать документации здесь , чтобы понять, что get getDownloadUrl работает. Как видно из связанной документации по API, это не средство получения свойств, а метод, который возвращает Task<Uri>, который отслеживает асинхронную выборку нужного URL, так же, как задача загрузки:

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

Это будет работать только после полной загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...