我知道我们可以在 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/