如何使用HTML输入文件类型限制文件类型?
我有这个
<input type="file" id="fileUpload" name="fileUpload" size="23" accept="Calendar/ics"/>
我试图将类型限制为仅iCalendar格式类型。
我也想在服务器端检查它。我如何在ASP.NET MVC?
中执行此操作答案 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这样的东西让你这样做,并且还提供了一个花哨的进度条...我不知道你是否对你来说有点太“沉重”了。