asp.net - mvc4 或 html 5 中的文件输入过滤器?

标签 asp.net asp.net-mvc html asp.net-mvc-4 file-upload

我知道我们可以在 HTML 5 中使用具有 accept 属性的过滤器类型 <input accept="audio/*|video/*|image/*|MIME_type">

但是这些所有东西也都显示“所有文件”选项。我想严格限制某些文件类型,例如“*.pdf、所有 office word 类型、图像、excel”。

我们怎样才能做到这一点?

我的代码喜欢

  @Html.TextBoxFor(m => m.Attachment, new { @class = "form-control", type = "file" })

最佳答案

您只需在您的案例 application/pdf 中将您的接受替换为完整的 mime 类型,而不是通配符 *。

@Html.TextBoxFor(m => m.Attachment, new { @class = "form-control", type = "file", accept="application/pdf" })

你可以用逗号分隔多个 mime 类型,如果你想在单个上传控件中使用 pdf 和 word,你可以这样做:

@Html.TextBoxFor(m => m.Attachment, new { @class = "form-control", type = "file", accept="application/pdf, application/msword" })

更新

如果您将接受的 MIME 类型存储在一个集合中(为了演示目的在此处进行硬编码)

private List<string> mimeTypes = new List<string> {
        "application/pdf", 
        "application/msword"
    };

你可以将接受的 mime 类型添加到你的模型中,像这样返回它们:

model.MimeTypes = string.Join(", ", mimeTypes);

像这样渲染它们:

@Html.TextBoxFor(m => m.Attachment, new { @class = "form-control", type = "file", accept=Model.MimeTypes })

关于asp.net - mvc4 或 html 5 中的文件输入过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21536669/

相关文章:

asp.net - 如何设置 SelectedIndexChanged 和普通面板更新事件之间的处理时间事件?

ASP.NET MVC IgnoreRoute()按域

c# - 我应该在 Controller 中打开数据库连接吗?

c# - ASP 转发器从 div 溢出

JavaScript onload() 函数

asp.net - 如何以及在何处调用 Database.EnsureCreated 和 Database.Migrate?

c# - 将嵌套 ListView 的数据源绑定(bind)到父级 ListView 的数据源

c# - 我可以告诉 bindingRedirect 始终使用最新的可用版本吗?

c# - 传递 Controller json 结果以查看

html - 如何使 CSS 中的高度响应?