首页 > 解决方案 > 无法获取上传文件的 URL

问题描述

我正在尝试获取上传文件的 URL,但我得到了这个:com.google.android.gms.tasks.zzu@a12a0cb或类似的东西。

这是我尝试过的代码(kotlin):

val uid = UUID.randomUUID().toString()

val storageRef = FirebaseStorage.getInstance().reference.child("content/$uid/$uid.jpg")

storageRef.putFile(file).addOnSuccessListener { taskSnapShot ->
    val downloadUrl = storageRef.downloadUrl
    FirebaseDatabase.getInstance().reference.child("Photos").child(date).push().setValue(downloadUrl)
}

但它不起作用。我还尝试了以下代码:

val uid = UUID.randomUUID().toString()

val storageRef = FirebaseStorage.getInstance().reference.child("content/$uid/$uid.jpg")

storageRef.putFile(file).addOnSuccessListener (
      object : OnSuccessListener<UploadTask.TaskSnapshot> {
          override fun onSuccess(taskSnapshot: UploadTask.TaskSnapshot?) {
              val downloadUrl = storageRef.downloadUrl
              FirebaseDatabase.getInstance().reference.child("Photos").child(date).push().setValue(downloadUrl)
          }
      }
)

但结果是一样的。我仍然被com.google.android.gms.tasks.zzu@a12a0cb插入到我的数据库中,而不是 URL。我做错了什么?我花了一整天的时间试图弄清楚,请帮忙。

标签: androidfirebasefirebase-realtime-databasefirebase-storage

解决方案


我有同样的问题。我刚刚解决了。我不能确切地说为什么它不能与其他语法一起使用,但我这样做的结果是:(Firebase 实现版本:16.0.1 / Kotlin)

mReference.putFile (uri) .addOnFailureListener {
          // failure
       } .addOnSuccessListener () {taskSnapshot -> 
         // success
             mReference.downloadUrl.addOnCompleteListener () {taskSnapshot ->

                 var url = taskSnapshot.result
                 println ("url =" + url.toString ())

             }
  }

推荐阅读