嗨,我想获取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())
}
})
答案 0 :(得分: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
上传文件。另请参阅:How to get URL from Firebase Storage getDownloadURL
问题的实质是此API的设计不是很好。该方法以“ get”开头,但实际上不是属性获取器。