Kotlin FirebaseStorage getDownloadUrl错误

问题描述 投票:0回答:1

您好,我想获取downloadUrl,但出现错误我尝试过一些类似这样的方法

var firebaseURL =p0?.uploadSessionUri.toString()结果为url,但是如果我打开此URL,则会收到此错误Invalid request. X-Goog-Upload-Command header is missing.(我是科特林的新人)

uploadTo.addOnSuccessListener (object :OnSuccessListener<UploadTask.TaskSnapshot>{

        override fun onSuccess(p0: UploadTask.TaskSnapshot?) {

            var firebaseURL =p0.downloadUrl // i got error in this line

            FirebaseDatabase.getInstance().reference
                .child("Users")
                .child(FirebaseAuth.getInstance().currentUser?.uid!!)
                .child("imagurl")
                .setValue(firebaseURL.toString())

        }
    })
android kotlin firebase-storage
1个回答
0
投票
这里的downloadUrl“属性”实际上根本不是属性。这是一种称为getDownloadUrl的方法,该方法返回另一个异步获取URL的Task。它不会直接返回URL。有关如何正确使用它的信息,请参见documentation。例如:

val ref = storageRef.child("images/mountains.jpg") uploadTask = ref.putFile(file) val urlTask = uploadTask.continueWithTask { task -> if (!task.isSuccessful) { task.exception?.let { throw it } } ref.downloadUrl }.addOnCompleteListener { task -> if (task.isSuccessful) { val downloadUri = task.result } else { // Handle failures // ... } }

这里发生的是:

    正在使用uploadTask上传文件。
  1. 完成后,该继续作为回调添加到该任务中
  2. ref.downloadUrl返回另一个任务以获取URL。
  3. 另一个回调已添加到链中以处理获取的URL。
  • 另请参见:How to get URL from Firebase Storage getDownloadURL

    事实是此API的设计不是很好。该方法以“ get”开头,但实际上不是属性获取器。

  • © www.soinside.com 2019 - 2024. All rights reserved.