我正在使用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."))
答案 0 :(得分:1)
来自the README:
Express Form具有各种配置选项,但旨在为典型的Express应用程序提供合理的默认设置。
...
dataSources(Array):一组Express请求属性,用于过滤和验证数据时用作数据源。默认值:
["body", "query", "params"]
。
所以沿着这些方向应该做的事情:
var form = require('express-form')
.configure({dataSources: ['body', 'files', 'query', 'params']});