@duplexsi/multer-storage-google-cloud
TypeScript icon, indicating that this package has built-in type declarations

1.1.1 • Public • Published

Google Cloud Multer Storage Engine

Lightweight, stream-based implementation of a Multer storage engine for storing uploaded files in a Google Cloud bucket built with TypeScript.

Installation

Npm: npm i -S @duplexsi/multer-storage-google-cloud

Yarn: yarn add @duplexsi/multer-storage-google-cloud

Usage & Example

For a full working example see test/index.ts. Run the example using npm test or yarn test.

Simply configure a new instance of the storage engine and pass it to Multer:

...
import { MulterGoogleCloudStorage } from '@duplexsi/multer-storage-google-cloud';

const storage = new MulterGoogleCloudStorage({
	bucketName: "test-bucket",
	keyFilename: join(__dirname, '..', 'google-storage.json'),
	destination: (req, f, cb) => cb(null, `profile-pictures/${f.originalname}`)
});

const app = express();
app.post('/', multer({ storage }).single('file'), (req, res) => {
	// ...
	res.send(/* ... */);
});
...

The library also exposes the selected bucket for direct access (refer to the Google Cloud Storage NodeJS Client documentation):

router.get('/uploads/*', async (req, res) => {
   const [,, ...file] = req.path.split('/');

   const bucketFile = storage.selectedBucket.file(file.join('/'));
   if(!(await bucketFile.exists())[0]) return res.status(404).send("Not Found");

   const fileReadStream = bucketFile.createReadStream();
   fileReadStream.pipe(res);
});

Constructor Options

Name Description
bucketName Required. The name of the bucket to upload into.
destination Optional. Full path to the destination directory in the bucket or a factory function which is called for every uploaded file with the Express req, Multer file, and a callback. It must return the full destination path, including the filename!
bucketOptions Optional. BucketOptions passed to storage.bucket(name, options)
writeStreamOptions Optional. CreateWriteStreamOptions passed to bucketFile.createWriteStream(options)
fileOptions Optional. FileOptions passed to bucket.file(name, options)

Package Sidebar

Install

npm i @duplexsi/multer-storage-google-cloud

Weekly Downloads

1

Version

1.1.1

License

MIT

Unpacked Size

11.2 kB

Total Files

7

Last publish

Collaborators

  • tadejsi
  • tadejgasparovic