How to upload Multiple Data to Firebase Store without duplicate

Viewed 50

I've googled about how to send and get the Multiple data on firebase. but none of them worked for me. and some of them work strangely like my code. My Code uploads multiple data. but it is uploaded in duplicate. What I wanted to do is uploading different data separately. Please let me know what I have to modify.


Here is My code.

const [file, setFile] = useState([]);

function handleChange(e) {
for (let i = 0; i < e.target.files.length; i++) {
  const newFile = e.target.files[i];
 
  setFile(newFile);
  }
}

function uploadImageAsPromise() {

Promise.all(
  [file].map((file) => {
    return new Promise(() => {
      const uploadTask = storage.ref(`files/${file.name}`).put(file);
      uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED, (snapshot) => {
        console.log(snapshot);
       
      storage
      .ref("files")
      .child(file.name)
      .getDownloadURL()
      .then((url) => {
        
        //post image inside the db
        
        const itemObj = {
          timestamp: firebase.firestore.FieldValue.serverTimestamp(),
          caption: file.name,
          fileUrl: url,
          size: snapshot._delegate.bytesTransferred,
        };

        db.collection("myFiles").add(itemObj);
        
        setUploading(false);
        setOpen(false);
        setFile(null);
      });
    })
  }),
  storage
  .ref("files")
  .child(file.name)
  .getMetadata()
  .then((meta) => {
    console.log(meta.size);
  })       
}))
}




    <input type="file" onChange={handleChange} multiple />
    <button onClick={uploadImageAsPromise}>Upload</button>
       
0 Answers
Related