上传文件并过滤其扩展名

时间:2013-07-04 13:15:21

标签: c# .net asp.net-mvc file-upload razor

我有一个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",但它不起作用。

为什么这个过滤器不起作用?我该如何修改代码?

3 个答案:

答案 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" />
 }