I\'m using the following code to upload one or multiple files to Firebase Storage. When the upload is completed the downloadURL is logged in the console.
I would lik
UploadTask objects behave just like promises, as they have then() and catch() methods. So, you can collect them all into an array and use Promise.all()
to generate a another promise that resolves when all the uploads are complete.
const promises = [];
files.forEach(file => {
const uploadTask = Storage.ref(`files/${file.name}`).put(file);
promises.push(uploadTask);
uploadTask.on('state_changed', snapshot => {
const progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
console.log(progress);
}, error => { console.log(error) }, () => {
uploadTask.snapshot.ref.getDownloadURL().then(downloadURL => {
console.log(downloadURL);
});
});
});
Promise.all(promises).then(tasks => {
console.log('all uploads complete');
});