Im играя с загрузкой файлов в Node.js/multerCant получить multer обработки ошибок FileFilter работать
Я получил хранение и пределы рабочих. Но теперь им играть с FileFilter просто отрицать некоторые файлы MimeType так:
fileFilter: function (req, file, cb) {
if (file.mimetype !== 'image/png') {
return cb(null, false, new Error('goes wrong on the mimetype'));
}
cb(null, true);
}
Когда файл будет загружен, что не детские это не примет его. Но это также не вызовет if(err)
Когда файл является большим, он генерирует ошибку. Так почему-то мне нужно создать ошибку на filefilter, но я не уверен, как и догадываться new Error
не так
Так как же я должен генерировать ошибку, если файл неправильный. Что я делаю не так?
Полный код:
var maxSize = 1 * 1000 * 1000;
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, 'public/upload');
},
filename: function (req, file, callback) {
callback(null, file.originalname);
}
});
var upload = multer({
storage : storage,
limits: { fileSize: maxSize },
fileFilter: function (req, file, cb) {
if (file.mimetype !== 'image/png') {
return cb(null, false, new Error('I don\'t have a clue!'));
}
cb(null, true);
}
}).single('bestand');
router.post('/upload',function(req,res){
upload(req,res,function(err) {
if(err) {
return res.end("some error");
}
)}
)}
Ааа это звучит хорошо. Я собираюсь проверить это позже сегодня, когда я вернусь домой. Благодаря! –
Если вы измените ext exe-файла на png, вы можете сделать multer fool. –
уверен. Это всегда о том, чего вы хотите. Иногда достаточно проверить ext, и нам все равно, что с ним происходит. Иногда вы хотите проверить первые байты файла, чтобы убедиться, какой у него настоящий тип - например, когда вам нужно что-то делать с этим файлом. Но что, если файл поврежден. В этом случае вам также необходимо проверить полный файл. В качестве инженеров наша ответственность заключается в выборе лучших инструментов для каждого сценария –