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

但是这些所有内容也都显示了“所有文件”选项。我想严格限制某些文件类型,例如“*.pdf,所有办公字词类型,图像,excel”。

我们怎么做?

我的代码喜欢

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

最佳答案

您只需在您的案例应用程序/pdf 中用完整的 MIME 类型替换您的 accept(s) 而不是通配符 *。

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

10-14 03:00