gpt4 book ai didi

validation - express-form 可以验证需要的输入类型 'file' 吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:09 25 4
gpt4 key购买 nike

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

它是否能够验证file类型的输入?我特别想要求有人上传文件。

编辑莱纳斯:)

我尝试过:field("pdf").required("pdf", "您必须选择要上传的文件。")

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

编辑/工作代码:我根据 Linus 的回答做了什么让它工作。

我不仅需要配置 dataSources 参数,还需要检查字段的 size 属性,因为仅在字段上执行 required 还不够好,因为即使文件输入为空,它仍然存在(元数据等)。因此,我执行了一个自定义验证函数,确保 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."))

最佳答案

来自the README :

Express Form has various configuration options, but aims for sensible defaults for a typical Express application.

...

dataSources (Array): An array of Express request properties to use as data sources when filtering and validating data. Default: ["body", "query", "params"].

所以按照这些思路应该可以解决问题:

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

关于validation - express-form 可以验证需要的输入类型 'file' 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11015838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com