我有一个ASP.Net网络应用程序,我必须上传文件:
@using (Html.BeginForm("Uploading_validation", "Super", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="dossier" accept="*.iso, *.rar, *.zip"/>
<br />
@Html.Label("Date d'expiration")
<input type="text" id="datepicker" name="duree" />
<br />
<input type="submit" value="OK" />
}
我只想接受扩展程序accept="*.iso, *.rar, *.zip"
,但它不起作用。
为什么这个过滤器不起作用?我该如何修改代码?
答案 0 :(得分:6)
您可以使用FileExtensions实现此目的:
[Required, FileExtensions(Extensions=".iso,.rar,.zip", ErrorMessage="Incorrect file format")]
将Dossier添加到模型中,将其传递回视图并按如下方式渲染:
@Html.TextBoxFor(m => m.Dossier, new { type = "file" })
@Html.ValidationMessageFor(m => m.Dossier)
它应该验证客户端和服务器端。
答案 1 :(得分:3)
accept
属性。您不能依赖客户端,应该过滤文件。
顺便说一下,你应该这样使用这个属性:
accept="application/iso,application/rar,application/zip"
更新:以其他方式,您可以使用javascript验证文件扩展名:look at sample
答案 2 :(得分:2)
这个代码段似乎可以被所有浏览器接受
@using (Html.BeginForm("Uploading_validation", "Super", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="dossier" accept=".rar , .zip"/>
<br />
@Html.Label("Date d'expiration")
<input type="text" id="datepicker" name="duree" />
<br />
<input type="submit" value="OK" />
}