我正在将多张图片上传到 Firebase 并已完成,但我无法将 url 链接保存到列表中
Posted
技术标签:
【中文标题】我正在将多张图片上传到 Firebase 并已完成,但我无法将 url 链接保存到列表中【英文标题】:I'm uploading multiple images to Firebase and it's completed, but I can't save the url link to a list 【发布时间】:2021-12-15 00:01:56 【问题描述】:我正在将多张图片上传到 Firebase 并且已完成,但我无法将 URL 链接保存到列表中。
private fun uploadAllImage(imageList: MutableList<Uri>)
val storageReference = FirebaseStorage.getInstance().reference.child("image")
val storeImage = mutableListOf<Uri>()
for (i in imageList)
val indImg = i
var imageName = storageReference.child("Image" + indImg.lastPathSegment)
imageName.putFile(indImg).addOnSuccessListener
binding.userImage.setImageURI(null)
imageName.downloadUrl.addOnSuccessListener
Log.d("image", it.toString())
storeImage.add(it)
Log.d("imageList", storeImage.size.toString())
【问题讨论】:
你能看到 logcat 中打印的日志消息吗? 【参考方案1】:尝试像这样完整的侦听器回调
imageName.putFile(indImg).addOnCompleteListener task ->
if (task.isSuccessful)
val downloadUrl = task.result.toString()
【讨论】:
【参考方案2】:当你调用.putFile()
方法时,意味着你正在执行一个异步操作。请记住,将文件实际上传到 Firebase 存储需要时间。因此,任何需要处理与该操作相关的数据的代码都需要添加到onSuccess()
方法中,或者从那里调用。所以你必须移动以下代码行:
Log.d("imageList", storeImage.size.toString())
在回调内部,真正知道单次上传何时完成。
但是,当您并行添加多个文件时,您永远不会知道所有上传何时完成,除非您一个接一个地执行上传操作。这可以使用递归(调用自身的函数)来完成。所以请尝试使用我在以下帖子中的回答:
how do I upload multiple files to firebase databse in order as in arraylist?它是 Java 代码,但可以非常简单地转换为 Kotlin。
【讨论】:
嘿易卜拉欣。我可以帮助您了解其他信息吗?如果您认为我的回答对您有所帮助,请考虑通过单击左侧投票箭头下方的复选标记(✔️)来接受它。应将颜色更改为绿色。我真的很感激。谢谢!以上是关于我正在将多张图片上传到 Firebase 并已完成,但我无法将 url 链接保存到列表中的主要内容,如果未能解决你的问题,请参考以下文章
使用flutter将多张图片上传到firestore并获取它的下载URL并将所有URL保存到firebase
Flutter 无法上传从 multi_image_picker 获取的多张图片
React Native Firebase 多张图片上传问题