我正在将多个图像上传到Firebase-Storage。
问题是,如果我尝试上传5张图片。 2/5图像被上传,我杀死了该应用程序,但不重新打开它就将其卸载,然后将两个图像上传至Firebase存储,而其他3个则没有。我存储“下载网址”的方式就像如果所有5张图片都上传了,然后将其与其他数据一起存储到Firestore中,如果失败,则不存储下载网址,这意味着其他数据将不会被上传到Firestore。
这是我用来将多个图像上传到数据库的功能。
private fun uploadImages() {
// to store mutliple url's
val imagesUrl = ArrayList<String>()
// mUriImagesList is an arraylist of images
if (mUriImagesList.isNotEmpty()) {
for (image in mUriImagesList) {
// ref = some storage path //
val uploadTask = ref.putFile(image)
val urlTask = uploadTask.continueWithTask { task ->
if(!task.isSuccessful) {
task.exception?.let {
throw it
}
}
ref.downloadUrl
}.addOnCompleteListener { task ->
val downloadUri = task.result
imagesUrl.add(downloadUri.toString())
if(imagesUrl.size == mUriImagesList.size) {
// some other data which will uploaded to firestore if all the images get uploaded to storage
uploadMomentData(imagesUrl)
}
} else {
Log.w(NEW_FRAGMENT_TAG, "Task FAILED")
}
}
}
}
}
如果所有图像上传失败,是否可以从存储中删除那2张图像? -我想写一个云函数,但条件是什么?由于无法确定上传到Firebase-storage的数据是否与Firestore无关(通过下载URL)。