您可以帮我在将图像上传到Firebase时获取URL数组吗?
我的imageUrl = [undefined,undefined]上传2张img
export const handleUploadProductPhoto = async (files) => {
const imageUrl = await Promise.all(
files.map((file) => {
new Promise((resolve, reject) => {
const uploadTask = firebase
.storage()
.ref()
.child(`your/file/path/${file.name}`)
.put(file);
uploadTask.on(
firebase.storage.TaskEvent.STATE_CHANGED,
(snapshot) => {
const progress =
(snapshot.bytesTransferred / snapshot.totalBytes) * 100;
if (snapshot.state === firebase.storage.TaskState.RUNNING) {
console.log(`Progress: ${progress}%`);
}
},
(error) => console.log(error),
() => {
uploadTask.snapshot.ref
.getDownloadURL()
.then((url) => resolve(url)); //I have success here - two urls
}
);
});
})
).then((res) => console.log(res));
};
答案 0 :(得分:0)
您在return
上缺少new Promise
。所以应该是:
return new Promise((resolve, reject) => {
...
没有return
,每个files.map((file) => {
都不会返回任何内容(因此undefined
),这就是Promise.all
然后传递到您的then
中的原因。