Asp.net 使用jQuery在不回发的情况下对类型文件的输入进行客户端验证
我想在客户端检查是否在提交表单之前选择了文件Asp.net 使用jQuery在不回发的情况下对类型文件的输入进行客户端验证,asp.net,jquery,jquery-validate,asp.net-mvc-3,Asp.net,Jquery,Jquery Validate,Asp.net Mvc 3,我想在客户端检查是否在提交表单之前选择了文件 <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm("Upload", "Files", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input id="File" name="File" type="file" size="80" />
<input type="submit" name="name" value="Upload" />
}
@使用(Html.BeginForm(“上传”、“文件”、FormMethod.Post、新的{enctype=“multipart/formdata”}))
{
}
当前此表单正在进行回发以进行验证。出了什么问题?类型为“file”的输入是一个安全敏感控件,不能通过DOM编写脚本。想象一下,点击一个页面,该页面将控件的值设置为敏感文件的已知位置,并自动提交表单。该控件最后一次可编写脚本的时间大约是1995年或1996年。对于互联网安全来说,那是一个非常愚蠢的时期。@xOn关于不能修改file元素的说法是正确的,但是您应该能够验证它 下面是一个file元素,它使用不引人注目的验证来确保字段在提交之前具有值和正确的扩展名
<input type="file"
id="myImg"
name="logo"
data-val="true"
data-val-required="Oops, select the logo first!"
accept="jpg|jpeg"
data-val-accept="Sorry, we only accept jpegs." />
这在html5中对我来说是有效的,但可用性赢了(笑话)这是错误的。您可以获取
的文件名,并查看它是否为空或具有有效的扩展名。您无法设置它或获取文件的本地路径。
<input type="file" name="path" required>