Это способ реализации multer
. Вы можете использовать upload
как функцию или как промежуточное ПО, я использую его как функцию, потому что это позволяет мне более детально обрабатывать ошибки.
Не было необходимости в глобальной переменной, в этом случае, когда multer обрабатывает изображение, заполняет свойство req.file
информацией изображения, так как мы перезаписываем функцию filename
, теперь в req.file.filename
это пользовательское значение, которое нам нужно.
const multer = require('multer');
const multerStorage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './public/assets/images');
},
filename: function (req, file, cb) {
if (!file.originalname.match(/\.(png|jpg|jpeg)$/)) {
var err = new Error();
err.code = 'filetype';
return cb(err);
} else {
const imageName = Date.now() + '_' + file.originalname;
cb(null, imageName);
}
}
});
const upload = multer({ storage: multerStorage }).single('myfile');
router.post('/newsfeeds',(req, res) => {
upload(req, res, function (err) {
if (err || !req.file) {
// An error occurred while loading the image.
return res.status(400);
}
newsfeed.path = req.file.filename;
newsfeed.save(function (err) {
});
});
});
Здесь вы можете найти таблицу с остальными свойствами изображения
что у вас есть после multer
обработки изображения. Документация