表达式可以验证所需的“文件”输入类型吗?

时间:2012-06-13 13:25:14

标签: validation node.js express

我正在使用express-form https://github.com/dandean/express-form

是否能够验证file类型的输入?我特别希望require有人上传文件。

为Linus编辑:)

我试过了: field("pdf").required("pdf", "You must select a file to upload.")

问题在于,这是在寻找req.body.pdf而不是req.files.pdf,因此它始终认为验证失败。

编辑/工作代码:我根据Linus'答案。

我不仅需要配置dataSources参数,还需要检查字段的size属性,因为只需在字段上执行required即可; t足够好,因为即使文件输入为空,它仍然存在(元数据等)。相反,我做了一个自定义验证函数,确保pdf.size大于0.在我的代码中,我还检查是否有title。我离开了这里以防万一有人想知道如何串联多个验证。

var form = require('express-form')
  .configure({dataSources: ['body', 'files', 'query', 'params']});

form(
  field("pdf.size").custom(function(value) {
    if (value <= "0") {
      throw new Error("You must select a file to upload.");
    }
  })
 , field("title").trim().required("title", "Please enter a title for your PDF."))

1 个答案:

答案 0 :(得分:1)

来自the README

  

Express Form具有各种配置选项,但旨在为典型的Express应用程序提供合理的默认设置。

     

...

     

dataSources(Array):一组Express请求属性,用于过滤和验证数据时用作数据源。默认值:["body", "query", "params"]

所以沿着这些方向应该做的事情:

var form = require('express-form')
           .configure({dataSources: ['body', 'files', 'query', 'params']});