Вот как это делается, поместите следующий код в отдельный файл.
Файл aws содержит include для aws и конфигурацию s3. Вот так:
var AWS = require("aws-sdk");
AWS.config.credentials = {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
region: "eu-west-1"
};
AWS.config.region = "eu-west-1";
var s3 = new AWS.S3();
module.exports = { AWS, s3 };
var AWS = require("../AWS").AWS;
var s3 = require("../AWS").s3;
var multer = require("multer");
var multerS3 = require("multer-s3");
, чем я включаю следующий код, например, так:
let singleFileUpload = require ("../ upload");
Наконец, я строю функцию в файле upload / index.js следующим образом:
function singleFileUpload(req, res, newFileName, bucketName, fieldName) {
var fileFilter = (req, file, cb) => {
var ext = file.originalname.split(".").slice(-1);
console.log("ext", ext);
if (ext == "jpg" || ext == "mp4" || ext == "wmv") {
cb(null, true);
} else {
cb(new Error("invalid file format"), false);
}
};
var upload = multer({
fileFilter,
storage: multerS3({
s3,
bucket: bucketName,
acl: "public-read",
metadata: function(req, file, cb) {
cb(null, { test: "testing_meta_data!" });
},
key: function(req, file, cb) {
console.log(file);
let fileExtension = file.originalname.split(".")[1];
cb(null, newFileName + "." + fileExtension);
}
})
});
var singleUpload = upload.single(fieldName);
singleUpload(req, res, error => {
if (error) {
throw error;
} else {
console.log("it worked");
}
});
}
module.exports = singleFileUpload;
Я затем запускаю функцию следующим образом:
var newFileName = "Testing";
var fieldName = "image";
singleFileUpload(
req,
res,
newFileName,
process.env.BUCKET_NAME,
fieldName
);