我正在使用表单上传文件。我只想上传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来验证表单。
答案 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" rule和HTML5 "accept" attribute。
答案 3 :(得分:6)
如果您将两种格式都作为接受属性,它应该可以使用
accept="image/jpeg,image/png,jpg|png"