Я знаю, что могу изменить имя файла с помощью multer с помощью объекта хранения, например:
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, process.env.UPLOAD_DIR);
},
filename: (req, file, cb) => {
cb(null, 'bla.png');
}
});
const upload = multer({ storage: storage } );
Мой запрос, помимо наличия файла, также содержит некоторые текстовые атрибуты, такие как name: myPic.png
.
Возможно ли динамическое изменение имени файла в зависимости от других атрибутов запроса или в контроллере, например:
filename: (req, file, cb) => {
cb(null, `${req.body.name}.png`);
}
или
router.post('/upload', upload.single('pic'), myController.upload);
/* in controller */
upload = async (req: Request, res: Response) => {
try {
/* change the filename of multer here? */
} catch (err) {
winston.error(`Error while uploading: ${err.message}`);
winston.error(`Stack trace: ${err.stack}`);
sendJSONResponse(res, err, HttpStatus.INTERNAL_SERVER_ERROR);
}
}