Kotlin - 获取 Firebase Image DownloadUrl 返回"com.google.android.gms.tasks.zzu"



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

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

我试图更改下载网址

filepath.downloadUrl.toString
thumbFilePath.downloadUrl.toString

但这两个值都得到"com.google.android.gms.tasks.zzu">

我也试图改变

task.result.sessionurl.downloadUrl.toString

对于这个,我正在获得下载网址,但不是我问题的完整解决方案,因为我仍然无法显示图像,我需要获取拇指

网址下载网址

你和这个问题有完全相同和非常普遍的误解,除了它是在java中。 您应该按照此处的文档了解getDownloadUrl的工作原理。 正如您从链接的 API 文档中看到的那样,它不是一个属性获取器,它实际上是一个返回跟踪所需 URL 异步提取的Task<Uri>的方法,就像上传任务一样:

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

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

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

这里

只是放在那里,我也遇到了同样的问题,

但这两个值都得到"com.google.android.gms.tasks.zzu">

但这不是OP的相同错误

使用addOnCompleteListener而不是addOnSuccesslistener

我的错误代码:

imageRef.downloadUrl.addOnCompleteListener { url ->
val imageURL = url.toString()
println("imageURL: $imageURL , url: $url")
addUserToDatabase(imageURL)
}

相关内容

最新更新