如何使用HTML输入文件类型限制文件类型?

时间:2009-12-30 02:43:08

标签: c# .net html asp.net-mvc

如何使用HTML输入文件类型限制文件类型?

我有这个

<input type="file" id="fileUpload" name="fileUpload" size="23" accept="Calendar/ics"/>

我试图将类型限制为仅iCalendar格式类型。

我也想在服务器端检查它。我如何在ASP.NET MVC

中执行此操作

5 个答案:

答案 0 :(得分:20)

不幸的是,您不能像在标准文件浏览器对话框中那样限制文件扩展名。但是,您可以在用户选择文件后检查扩展名。

您可以添加此事件处理程序。

filebox.Attributes.Add("onchange", "fileSelectedChanged(this);");

和这个JavaScript函数

function fileSelectedChanged(obj) {
    var filePath = obj.value;

    var ext = filePath.substring(filePath.lastIndexOf('.') + 1).toLowerCase();
    if(ext != 'csv') {
        alert('Only files with the file extension CSV are allowed');
    } else {
        document.getElementById('form1').submit();
    }
}

您还应该使用以下命令在服务器上进行检查:

filebox.PostedFile.FileName

filebox.PostedFile.ContentType

答案 1 :(得分:3)

text / calendar是正确的mime类型

<input type="file" id="fileUpload" name="fileUpload" size="23" accept="text/calendar" />

答案 2 :(得分:1)

接受你应该使用contetypes属性通知单有“t” 在内容类型中

并在服务器代码中检查如下

HttpPostedFileBase file = Request.Files [0];

如果(!file.ContentType.startsWith( “文本/日历”)) {     //错误 }

希望这能解决你的问题。如果愿意,请标记我的答案。

答案 3 :(得分:0)

您无法指定用户可以选择的文件类型。您可以使用Javascript来阻止用户提交表单,但这还不够好。可以在浏览器中轻松禁用Javascript。你需要服务器端的逻辑来评估上传的内容类型(即使只是检查文件扩展名真的不够好)......

HttpPostedFile file = Request.Files(0);

if(file.ContentType != "text/calendar")
{
    //Error
}

答案 4 :(得分:0)

我个人更喜欢像Uploadify这样的东西让你这样做,并且还提供了一个花哨的进度条...我不知道你是否对你来说有点太“沉重”了。