bogdan_uman
@bogdan_uman
шлЫмазл неукЪ-поцЪ

Multer проверка наличия параметра file?

Здравствуйте, а не подскажите как правильно сделать валидацию в multer, что если нет наличия параметра file выдавать ошибку?

const fileFilter = async (req, file, next) => {
 ...
  return next(null, true);
};

const storage = multer.diskStorage({
  destination: (req, file, cb) => cb(null, pathGalleryCategories),
  filename: (req, file, cb) => cb(null, req.categoryId.toString())
});

const upload = multer({
  fileFilter,
  storage
});

routes.post('', upload.single('file'), (req, res) => {
  res.json({ id: req.categoryId });
});


Получается, если не задать параметр file, тогда вообще не срабатывает middlware upload.single('file') -> fileFilter.
То как правильно делать проверку? Спасибо.
  • Вопрос задан
  • 190 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Добавить ещё один middleware или завернуть multer в middleware

routes.post('',
  upload.single('file'),
  (req, res, next) => {
    next(req.file ? null : new Error('No file!'));
  },
  (req, res) => {
    res.json({ id: req.categoryId });
  }
);


или

routes.post('',
  (req, res, next) => {
    upload.single('file')(req, res, (err) => {
      if (err) return next(err);
      if (!req.file) return next(new Error('No file!'));
      next();
    });
  },
  (req, res) => {
    res.json({ id: req.categoryId });
  }
);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы