Заранее благодарю всех за помощь. У меня есть сервер Express с конечной точкой, на которую я отправляю форму и файл. В форме есть флаг, который я должен проверить перед сохранением файла с помощью Multer, в основном что-то вроде
`if(!req.body.isProdMenu){
// save file here
}`
Я хочу все же сохранить данные в отправленной форме, но не файл, если флаг ложный. Однако проблема в том, что Multer сохраняет файл, даже если флаг установлен в false. Вот моя конфигурация Multer:
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, DIR);
},
filename: (req, file, cb) => {
const fileName = file.originalname.toLowerCase().split(" ").join("-");
cb(null, uuidv4() + "-" + fileName);
}
});
const upload = multer({
storage: storage,
fileFilter: (req, file, cb) => {
if (file.mimetype == "image/png" || file.mimetype == "image/jpg" || file.mimetype == "image/jpeg") {
cb(null, true);
} else {
cb(null, false);
return cb(new Error("Allowed image formats: png, jpg, jpeg"));
}
}
}).single("posImg");
Вот и моя конечная точка:
const addProduct = async (req: express.Request, res: express.Response, next: express.NextFunction) => {
MulterUpload(req, res, async (err: any) => {
if (err instanceof multer.MulterError) {
console.log(err);
next(err);
}
if(!req.body.isProdMenu) {
// Don't save file but proceed with saving the submitted form
}
let file;
file = req.file;
const product: IProductData = parseBody(req.body);
product.path = file.filename;
let status = addProductService(product);
});
}
Кроме того, когда я пытаюсь запросить тело вне промежуточного программного обеспечения MulterUpload, я получаю пустой объект, поэтому я не могу условно запустить промежуточное ПО. Может кто-нибудь мне помочь?