我正在尝试通过使用Compressor库创建两个文件夹来将图像上传到实时Firebase数据库,并且需要使用用户名显示像Messenger那样的图像,但是由于网址问题,我无法显示图像
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
除了在Java中,您与this question有着完全相同且非常普遍的误解。您应该follow the documentation here才能理解getDownloadUrl的工作原理。从链接的API文档中可以看到,它不是属性获取器,它实际上是一个返回Task<Uri>
的方法,该方法跟踪所需URL的异步获取,就像上载任务一样:
filePath.downloadUrl
.addOnSuccessListener { urlTask ->
// download URL is available here
val url = urlTask.result.toString()
}.addOnFailureListener { e ->
// Handle any errors
}
仅在完全完成上载后才能使用。