63 lines
1.7 KiB
JavaScript
63 lines
1.7 KiB
JavaScript
|
|
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);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
};
|