DEV Community

Discussion on: How to do image upload with firebase in react.

Collapse
 
samuelkarani profile image
Samuel Karani • Edited

refactored updated version:

import React, { useState } from "react";
import firebase from "firebase/compat/app";
import "firebase/compat/storage";

export const storage = firebase.storage();

export default function App() {
  const [file, setFile] = useState(null);
  const [url, setURL] = useState("");

  function handleChange(e) {
    if (e.target.files[0])
        setFile(e.target.files[0]);
  }

  function handleUpload(e) {
    e.preventDefault();
    const path = `/images/${file.name}`;
    const ref = storage.ref(path);
    await ref.put(file);
    const url = await ref.getDownloadURL();
    setURL(url);
    setFile(null);
  }

  return (
    <div>
      <form onSubmit={handleUpload}>
        <input type="file" onChange={handleChange} />
        <button disabled={!file}>upload to firebase</button>
      </form>
      <img src={url} alt="" />
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode
Collapse
 
muhammadanasalvi18 profile image
Anas Alvi

it gives error
storage.ref is not a function

Collapse
 
samuelkarani profile image
Samuel Karani

i've updated the snippet for new firebase >= 9.0