提问者:小点点

NodeJS Multer在上载前验证字段


我试图在上传图片之前验证我的表单,但是我在中间件上得到了空字符串

const upload = multer({
  storage: storage
});

router.post('/upload', formsValidation, upload.fields([{

  name: 'images',
  maxCount: 20

}, {

  name: 'imageMain',
  maxCount: 1

}]), function(req, res, next) {
  code...

});

下面是我的中间件:

function formsValidation (req, res, next) {

  console.log(req.body) //getting empty array here
  return next();
}

我知道我可以使用multer的fileFilter,但是有些时候我没有任何图像可以上传,只有string来存储和验证,我尝试将req.body从multipart/form-data解析为string,然后验证并使用next(),但是我得到了一个范围错误,我该如何解决这个问题呢?


共1个答案

匿名用户

这是来自Multer's Docs的:

请注意,req.body可能尚未完全填充。这取决于客户端向服务器传输字段和文件的顺序。

这意味着您必须在multer中间件之后调用,以确保所有发布的数据都已完全填充

router.post('/upload', upload.fields([{

    name: 'images',
    maxCount: 20

}, {

    name: 'imageMain',
    maxCount: 1

}]), formsValidation, function(req, res, next) {
    code...
});