multer-s3-gcs
Version:
Amazon S3 and Google Cloud Storage parallel upload made easy
48 lines (42 loc) • 1.32 kB
JavaScript
const express = require('express');
const multer = require('multer');
const StorageEngine = require('./storage_engine.js');
// buckets
const AWSBucket = require('s3-bucket-toolkit');
const GCStorage = require('@google-cloud/storage');
const bucket = new AWSBucket({
accessKeyId: process.env.AWS_S3_KEY,
secretAccessKey: process.env.AWS_S3_SECRET,
region: 'us-east-1',
bucketACL: 'private',
bucketName: process.env.AWS_S3_BUCKET,
pagingDelay: 5, // (optional) set a global delay in between s3 api calls, default: 500ms
});
const gcs = GCStorage({
keyFilename: process.env.GCS_KEY_FILE,
});
const gcsBucket = gcs.bucket(process.env.GCS_BUCKET);
const app = express();
const upload = multer({
storage: StorageEngine({
awsBucket: bucket,
gcsBucket: gcsBucket,
destination: function (req, file, cb) {
cb(null, './uploads/' + file.originalname)
}
}),
// storage: multer.memoryStorage(),
dest: './uploads'
});
app.get('/', function(req, res) {
res.send('It\'s alive!');
})
app.post('/upload-here', upload.array('files'), function (req, res, next) {
// req.body contains the text fields
console.log('Upload success');
res.send(200);
});
app.set('port', process.env.PORT || 3000);
app.listen(process.env.PORT || 3000, function() {
console.log('Server started');
});