当前位置: 首页 > 知识库问答 >
问题:

NodeJS Multer在上载前验证字段

吴英武
2023-03-14

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

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个答案

解鸿运
2023-03-14

这是来自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...
});
 类似资料:
  • 我正在尝试使用jQuery验证插件验证表单中的文件上载字段。我只需要检查文件是否已上载,而不需要检查文件是否具有特定的大小和/或类型。在最初提交时一切正常,问题是表单被提交到数据库,并允许以后编辑。编辑表单时,我设置了一个附加的隐藏字段,末尾附加了。因此,对于名为的字段,有一个名为的字段,其中将包含以前的提交数据。这样用户就不必每次都重新上传文件。因此,当字段为空时,我不知道如何编写一个方法来检查

  • 我上传文件有问题。我使用kartik-v/yii2小部件文件输入扩展。这是我的代码: 表单模型规则 窗体视图 控制器动作 当我提交表单时,总是出现错误“需要图像字段”。我已经阅读了很多教程,但在使用ajax验证时仍然存在同样的问题。有人能看看它,告诉我我做错了什么吗?

  • 数据库字段约束 模型验证允许你为模型的每个属性指定格式/内容/继承验证. 验证会自动运行在create,update和save上. 你也可以调用validate()手动验证一个实例. class ValidateMe extends Model {} ValidateMe.init({ bar: { type: Sequelize.STRING, valid

  • 我有一个DTO类,我在其中设置了一些强制字段。并且,基于另一个类型字段,其中值可以假设A和B,如果类型A,则需要检查只有1项可以传递,如果B,它也可以大于1。 我需要检查一个列表在DTO类级别中是否至少有1个值。并且,在自定义批注验证中,我需要根据DTO的类型字段检查列表的大小。 所以,在DTO中 并且,在注释内 但是,由于字段级别发生在后面,如果我为items字段传递null,它将转到这个注释验

  • 我查了文件,但什么也找不到。有没有一种方法可以在上传之前验证文件的图像尺寸?我想为最小图像尺寸添加一个规则,并在图像太小的情况下显示一个错误消息。

  • 我正在创建一个基本的表单,出于某种原因,我在我的数字字段上得到了非常奇怪的HTML5验证。 代码如下。 你实际上在上面的代码中得到了同样的问题,但不同的值... 任何帮助都将不胜感激。