Semi working file upload progress bar
This commit is contained in:
parent
7de36c22db
commit
0e4664d9ad
24
src/App.js
24
src/App.js
|
@ -16,6 +16,7 @@ import Form from 'react-bootstrap/Form';
|
||||||
import Button from 'react-bootstrap/Button';
|
import Button from 'react-bootstrap/Button';
|
||||||
import 'bootstrap/dist/css/bootstrap.min.css';
|
import 'bootstrap/dist/css/bootstrap.min.css';
|
||||||
import Col from 'react-bootstrap/Col';
|
import Col from 'react-bootstrap/Col';
|
||||||
|
import ProgressBar from 'react-bootstrap/ProgressBar';
|
||||||
|
|
||||||
// Import DisplayEntries component which displays existing reviews
|
// Import DisplayEntries component which displays existing reviews
|
||||||
import DisplayEntries from "./components/DisplayEntries.js";
|
import DisplayEntries from "./components/DisplayEntries.js";
|
||||||
|
@ -39,6 +40,7 @@ export function MyForm(props) {
|
||||||
const [unbasedTakes, setUnbasedTakes] = useState([]);
|
const [unbasedTakes, setUnbasedTakes] = useState([]);
|
||||||
const storage = getStorage();
|
const storage = getStorage();
|
||||||
const storageRef = ref(storage, `media/${fileupload.name}`);
|
const storageRef = ref(storage, `media/${fileupload.name}`);
|
||||||
|
const [progress, setProgress] = useState(0);
|
||||||
|
|
||||||
// Fetch incidents from Firestore when the component mounts
|
// Fetch incidents from Firestore when the component mounts
|
||||||
if (!getApps().length) {
|
if (!getApps().length) {
|
||||||
|
@ -68,9 +70,23 @@ export function MyForm(props) {
|
||||||
if (fileupload) {
|
if (fileupload) {
|
||||||
const uploadTask = uploadBytesResumable(storageRef, fileupload);
|
const uploadTask = uploadBytesResumable(storageRef, fileupload);
|
||||||
|
|
||||||
|
// Track the progress of the upload task
|
||||||
|
uploadTask.on('state_changed',
|
||||||
|
(snapshot) => {
|
||||||
|
// Calculate the progress percentage
|
||||||
|
const progress = (snapshot.bytesTransferred / fileupload.size) * 100;
|
||||||
|
console.log('Upload is ' + progress + '% done');
|
||||||
|
|
||||||
|
// Update the progress state
|
||||||
|
setProgress(progress);
|
||||||
|
},
|
||||||
|
(error) => {
|
||||||
|
// Handle errors
|
||||||
|
console.log(error);
|
||||||
|
},
|
||||||
|
() => {
|
||||||
// Wait for the upload to finish
|
// Wait for the upload to finish
|
||||||
await uploadTask.then(async () => {
|
uploadTask.then(async () => {
|
||||||
// Get the download URL after the upload is complete
|
// Get the download URL after the upload is complete
|
||||||
const fileUrl = await getDownloadURL(uploadTask.snapshot.ref);
|
const fileUrl = await getDownloadURL(uploadTask.snapshot.ref);
|
||||||
|
|
||||||
|
@ -78,10 +94,12 @@ export function MyForm(props) {
|
||||||
unbasedData.fileUrl = fileUrl;
|
unbasedData.fileUrl = fileUrl;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const col = collection(db, `unbasedtakes`)
|
const col = collection(db, `unbasedtakes`)
|
||||||
const ref = await addDoc(col, unbasedData)
|
const ref = await addDoc(col, unbasedData)
|
||||||
console.log(ref)
|
console.log(ref);
|
||||||
alert("Form submitted successfully!");
|
alert("Form submitted successfully!");
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
}
|
}
|
||||||
|
@ -132,6 +150,8 @@ export function MyForm(props) {
|
||||||
setFileupload(e.target.files[0]);
|
setFileupload(e.target.files[0]);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
{/* Display the progress bar */}
|
||||||
|
<ProgressBar now={progress} label={`${progress}%`} />
|
||||||
|
|
||||||
<Button type="submit">Submit</Button>
|
<Button type="submit">Submit</Button>
|
||||||
</Col>
|
</Col>
|
||||||
|
|
Loading…
Reference in New Issue