Menyimpan Berkas (file) ke Firebase Storage menggunakan Firebase Functions

Storage Dec 18, 2020

Dear Pembaca Setia,

Kali ini Penulis hendak berbagi pengalaman saat Penulis mengerjakan suatu projek yang mengharuskan untuk menyimpan berkas (image, file, etc) ke Firebase Storage menggunakan Firebase Functions.

Informasi tentang Firebase Storage dapat diakses https://firebase.google.com/docs/storage.

Dan informasi tentang Firebase Cloud Functions dapat diakses di https://firebase.google.com/docs/functions

Firebase Storage menyediakan berbagai jalur akses ke layanannya: Android SDK, Web SDK, Admin SDK, dll. Karena pada projek ini Penulis bekerja dengan layanan Firebase Cloud Functions, maka jalur akses ke Firebase Storage mennggunakan Admin SDK.

Langsung saja, berikut adalah contoh code yang digunakan oleh Penulis:

const functions = require('firebase-functions');

const admin = require('firebase-admin');

exports.FileUpload = functions.https.onRequest(async (req, res) => {
    const imageExtension = req.body.ImageExtension;
    const imageDataUrl = req.body.ImageDataUrl;

    const filename = `${create_UUID()}.${imageExtension}`;
    const filetoken = create_UUID();

    const myBucket =
        await admin.storage().bucket()
            .file(filename)
            .save(
                Buffer.from(imageDataUrl, 'base64'),
                {
                    metadata:
                    {
                        contentType: `image/${imageExtension}`,
                        metadata: {
                            firebaseStorageDownloadTokens: filetoken,
                        }
                    }
                }
            );
});

function create_UUID() {
    var dt = new Date().getTime();
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
        var r = (dt + Math.random() * 16) % 16 | 0;
        dt = Math.floor(dt / 16);
        return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
    });
    return uuid;
}

Demikian tutorial singkat kali ini, semoga bermanfaat.

Salam Koding...

Tags