diff --git a/src/ImageUpload.js b/src/ImageUpload.js new file mode 100644 index 0000000..613d3fb --- /dev/null +++ b/src/ImageUpload.js @@ -0,0 +1,62 @@ +import React, { useState } from "react"; +import { storage, firestore } from "firebase/app"; +import "firebase/storage"; +import "firebase/firestore"; + +function ImageUpload() { + const [image, setImage] = useState(null); + const [imageUrl, setImageUrl] = useState(""); + const [progress, setProgress] = useState(0); + + const handleChange = (e) => { + if (e.target.files[0]) { + setImage(e.target.files[0]); + } + }; + + const handleUpload = () => { + const uploadTask = storage.ref(`images/${image.name}`).put(image); + + uploadTask.on( + "state_changed", + (snapshot) => { + const progress = Math.round( + (snapshot.bytesTransferred / snapshot.totalBytes) * 100 + ); + setProgress(progress); + }, + (error) => { + console.log(error); + }, + () => { + storage + .ref("images") + .child(image.name) + .getDownloadURL() + .then((url) => { + setImageUrl(url); + firestore() + .collection("images") + .add({ + imageUrl, + createdAt: new Date(), + }) + .then(() => { + setProgress(0); + setImage(null); + }); + }); + } + ); + }; + + return ( +