验证文件上载 - Jquery和“Accept”属性

时间:2012-05-08 10:36:41

标签: jquery asp.net-mvc-3 jquery-validate asp.net-mvc-validation

我正在使用表单上传文件。我只想上传PDF文件。这是我的代码:

允许用户选择文件的输入框:

@Html.FileBox(m => m.FileName, new { id = "FileName", accept = "application/pdf" })

以及显示错误消息的地方:

@Html.ValidationMessageFor(m=>m.FileName)

为输入字段生成的代码是:

    <input id="FileName" type="file" name="FileName" data-val-required="The File Name field is required." data-val-length-max="512" data-val-length="The field File Name must be a string with a maximum length of 512." data-val="true" accept="application/pdf">

现在,即使我选择了PDF文件,也​​会收到错误Please enter a value with a valid extension.

我正在使用MVC 3和不引人注意的jquery来验证表单。

4 个答案:

答案 0 :(得分:12)

我遇到了同样的问题,不得不完全禁用accept属性的验证。我在页面中添加了以下行,并且工作正常:

  

$。validator.addMethod('accept',function(){return true;});

答案 1 :(得分:9)

他们使用版本1.10.0更改了“accept”方法的行为。它现在不是检查文件扩展名,而是查看mime类型。旧行为现在可用作“扩展”方法。所以你只需要更新你的jquery验证插件版本就可以了。我用1.11.0替换了我当前的版本1.9.0并将有效的mime-types设置为accept-attribut。它现在按预期工作:

accept="image/*, application/pdf"

答案 2 :(得分:8)

jQuery Validation中内置的“accept”规则方法以类似“jpg | png”的格式获取值。

“accept”HTML属性采用类似“image / jpeg,image / png”的格式。

看来jQuery验证和HTML标准在这方面是不兼容的。

在此,您可以详细了解jQuery Validation's "accept" ruleHTML5 "accept" attribute

答案 3 :(得分:6)

如果您将两种格式都作为接受属性,它应该可以使用

accept="image/jpeg,image/png,jpg|png"