Files

63 lines
1.7 KiB
JavaScript
Raw Permalink Normal View History

2022-04-11 06:32:47 +02:00
const path = require('path');
const aws = require('aws-sdk');
const multer = require('multer');
const multerS3 = require('multer-s3');
const { createDirectoriesRecursiveV2 } = require('./../core/helpers');
module.exports = {
upload: function (location) {
if (process.env.NODE_ENV === 'production') {
return this.s3_upload(location);
} else {
return this.local_upload('');
}
},
s3_upload: function (location) {
try {
aws.config.update({
accessKeyId: process.env.DYNAMIC_CONFIG_AWS_KEY,
secretAccessKey: process.env.DYNAMIC_CONFIG_AWS_SECRET,
region: process.env.DYNAMIC_CONFIG_AWS_REGION,
});
const s3 = new aws.S3();
const upload = multer({
storage: multerS3({
s3: s3,
bucket: process.env.DYNAMIC_CONFIG_AWS_BUCKET,
acl: 'public-read',
contentType: multerS3.AUTO_CONTENT_TYPE,
key: function (req, file, cb) {
cb(null, location + file.originalname);
},
}),
});
return upload;
} catch (error) {
console.log('s3_upload => ', error);
}
},
local_upload: function () {
try {
const storage = multer.diskStorage({
destination: function (req, file, cb) {
createDirectoriesRecursiveV2(path.join(__dirname, '..', 'public', 'uploads'));
cb(null, path.join(__dirname, '..', 'public', 'uploads'));
},
filename: function (req, file, cb) {
const fileName = file.filename ?? file.originalname;
cb(null, Date.now() + '-' + fileName);
},
});
const upload = multer({ storage: storage });
return upload;
} catch (error) {
console.log('local_upload => ', error);
}
},
};