Привет всем, поэтому у меня небольшая проблема. У меня есть следующий код, который отлично работает, если я хочу загрузить один файл. Это выглядит так:
var AWS = require("../AWS").AWS;
var s3 = require("../AWS").s3;
var multer = require("multer");
var multerS3 = require("multer-s3");
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 fieldName = "image";
var newFileName = "myCustomFileName1";
singleFileUpload(req, res, newFileName, process.env.BUCKET_NAME, fieldName);
var fieldName = "image2";
var newFileName = "myCustomFileName2";
singleFileUpload(req, res, newFileName, process.env.BUCKET_NAME, fieldName);
Я получаю MulterError: неожиданное поле. Фактически, если у меня есть другой файл в массиве файлов, я получаю эту ошибку, даже если я не вызываю функцию дважды. Я хочу, чтобы возможность настроить имя файла для каждого поля. Без использования единственного <input type="upload" name="myfiles" multiple>
Но лучше иметь поле загрузки для каждого файла в форме.
На переднем конце. Любая помощь здесь будет потрясающей! Спасибо