Skip to content

Instantly share code, notes, and snippets.

@surajmandalcell
Created September 28, 2020 04:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save surajmandalcell/4e44c5729d67031e9c380ddd184e270f to your computer and use it in GitHub Desktop.
Save surajmandalcell/4e44c5729d67031e9c380ddd184e270f to your computer and use it in GitHub Desktop.
Firebase storage upload
// Copied from https://github.com/lyhd/reactjs/blob/react-firebase-file-upload/src/index.js
import React, { useState } from "react";
import { render } from "react-dom";
import { storage } from "./firebase";
const ReactFirebaseFileUpload = () => {
const [image, setImage] = useState(null);
const [url, setUrl] = 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 => {
setUrl(url);
});
}
);
};
console.log("image: ", image);
return (
<div>
<progress value={progress} max="100" />
<br />
<br />
<input type="file" onChange={handleChange} />
<button onClick={handleUpload}>Upload</button>
<br />
{url}
<br />
<img src={url || "http://via.placeholder.com/300"} alt="firebase-image" />
</div>
);
};
render(<ReactFirebaseFileUpload />, document.querySelector("#root"));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment