【发布时间】:2020-01-09 03:05:30
【问题描述】:
我有一个使用 uploadTask 将本地文件上传到 Firestore 存储的功能。我按照docs 中的说明进行操作。这是我的代码:
fun uploadAudioFile(file: File){
val audioFilePathUri = Uri.fromFile(file)
val ref = currentUserRef.child("audioFiles/" + System.currentTimeMillis() + "." + "m4a")
val uploadTask = ref.putFile(audioFilePathUri)
val urlTask =
uploadTask.continueWithTask(Continuation<UploadTask.TaskSnapshot, Task<Uri>> { task ->
if (!task.isSuccessful) {
task.exception?.let {
throw it
}
}
return@Continuation ref.downloadUrl
}).addOnCompleteListener { task ->
if (task.isSuccessful) {
val downloadUri = task.result
Log.d("STORAGE_UTIL", "downloadUri: " + downloadUri)
} else {
// Handle failures
}
}
}
该函数工作正常并呈现正确的 downloadUri。
现在我的问题是:我想重写这个函数,让它返回那个 downloadUri。像这样的:
fun uploadAudioFile(file: File): Uri? {
val audioFilePathUri = Uri.fromFile(file)
val ref = currentUserRef.child("audioFiles/" + System.currentTimeMillis() + "." + "m4a")
val uploadTask = ref.putFile(audioFilePathUri)
val urlTask =
uploadTask.continueWithTask(Continuation<UploadTask.TaskSnapshot, Task<Uri>> { task ->
if (!task.isSuccessful) {
task.exception?.let {
throw it
}
}
return@Continuation ref.downloadUrl
}).addOnCompleteListener { task ->
if (task.isSuccessful) {
val downloadUri = task.result
Log.d("STORAGE_UTIL", "downloadUri: " + downloadUri)
} else {
// Handle failures
}
}
return downloadUri
}
这给了我一个关于返回语句的 downloadUri 的未解决的参考。 我该如何解决这个问题?
【问题讨论】:
-
@AjahnCharles 您的“可能重复”涉及声明 getDownloadUrl() 不起作用,而我在获取 downloadUri 时没有问题。我的问题是关于如何在 Kotlin 函数中返回检索到的 downloadUri 的值。
标签: android firebase kotlin firebase-storage