Home Manual Reference Source

src/database/firebaseStorageMethods.js

import { storage } from './firebase';
import { ref, getDownloadURL, getMetadata } from "firebase/storage";
import fetch from 'node-fetch';


export default class Storage {

    folder;

    constructor(reference) {
        this.folder = reference;
    }

    getFileMetadata = async (filename) => {
        const mtd = await getMetadata(ref(storage, `${this.folder}/${filename}`));
        return mtd;
    }

    downloadFileUrl = async (filename) => {
        const url = await getDownloadURL(ref(storage, `${this.folder}/${filename}`));
        return url;
    }

    uploadFile = async (uri, name, metadata) => {
        
        let body = new FormData();
        body.append('photo', { uri: uri, name: name, filename: name, type: metadata.contentType });
        body.append('Content-Type', metadata.contentType);

        const url = `https://firebasestorage.googleapis.com/v0/b/devmovem-final.appspot.com/o?uploadType=media&name=${this.folder}%2F${name}`;
        const resp = await fetch(url, {
            method: 'POST', headers: {
                "Content-Type": "multipart/form-data",
            }, 
            body: body,
        });

    }

}