我目前正在尝试将多个图像上传到Firebase Storage并将每个下载URL存储在Firestore中。
仅供参考:images
是文件数组
到目前为止,我已经完成了以下代码:
uploadImages(name, collection, images, slide) {
const urls: { url: string, id: number }[] = [];
for (let i = 0; i < images.length; i++) {
const file = images[i].file;
const path = `${name}/${new Date().getTime()}_${file.name}`;
const ref = this.storage.ref(path);
this.task = this.storage.upload(path, file);
let snapshot = this.task.task.snapshot;
this.task.snapshotChanges().pipe(
finalize(async () => {
const downloadUrl = await ref.getDownloadURL().toPromise();
urls.push(downloadUrl);
if (i === images.length - 1) {
// urls.sort((a, b) => a.id - b.id);
// const result = urls.map(a => a.url);
console.log(urls);
this.productRef.doc(name).collection('collection-colors').doc(this.ccID.toString()).update({
[slide]: urls
});
}
})
).subscribe(snap => snapshot = snap);
}
}
这是一种作品,但有些图片无法上传-总是像一两个图片一样。寻找解决方案时,我尝试登录url
并返回以下内容:
这以某种方式包含了这个问题的答案,为什么只有一些下载URL被上传-它只能识别2个条目,但实际上只有3个!?这就是我没有得到的。是什么引起了这个问题?
在这种情况下,上传的数组只有2个而不是3个条目。
仅供参考,蓝色信息图标显示:“下面的值刚刚被评估”