gcs-upload
This is a convenient wrapper around multer and google cloud storage API as a single express middleware to upload file from user to Google Cloud Storage.
It will change the field for the uploaded file with a url string like http://storage.googleapis.com/bucket-name
/filename
that you can save in database.
Requirements
- Make sure you have a google cloud project with billing enabled.
- Enable Google Storage API for the project.
- Create a bucket to store the files.
- Create a service account and download the credential in JSON format.
Installation
npm install gcs-upload
Usage
options:
- limit: limits of uploaded data in object form (similar to limits option in multer)
- gcsConfig:
- keyFilename: file path for credential that you have downloaded before.
- bucketName: the bucket name that will contain the uploaded file, you can create one through google cloud console.
- prefix (optional): it's a string or a function that return a string which will be used as a prefix for filenames being stored.
It will return an upload object that have 3 methods: (.single(), .array(), and .fields()). You can use all of them just like how you would use multer.
note:
Instead of providing keyFilename in config, you can also use
GOOGLE_APPLICATION_CREDENTIALS
environment variable to store absolute path to the credential file.
Basic Example
Don't forget the enctype="multipart/form-data" in your form.
const express = const gcsUpload = const app = // ....... const upload = app app app // .......
To make uploaded files available for public view, add Storage Object Viewer
role for allUsers. Step by step instruction can be found here