2

我有一个 ASP.Net Web 应用程序,我必须在其中上传一个文件:

@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" />
 }

我想只接受 extensions accept="*.iso, *.rar, *.zip",但它没有用。

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

4

3 回答 3

8

您可以使用 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)

它应该验证客户端和服务器端。

于 2013-07-04T13:48:39.920 回答
3

accept 并非所有浏览器都支持该属性。您不能依赖客户端,应该过滤实际的文件。

顺便说一句,您应该以这种方式使用此属性:

accept="application/iso,application/rar,application/zip"

更新:以其他方式,您可以使用 javascript 验证文件扩展名:查看示例

于 2013-07-04T13:20:57.760 回答
3

所有浏览器似乎都可以接受此代码段

@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" />
 }
于 2013-07-04T13:48:52.460 回答