我已经编写了用于检查文件扩展名的javascript
function Validate() {
try {
var Name = document.getElementById('<%=fiFile.ClientID %>').value;
if (Name == "") {
return false;
}
else {
var index = Name.lastIndexOf('\\') + 1;
var FileName = Name.substring(index, Name.length);
var ext = extension(FileName)
switch (ext) {
case 'jpg':
case 'gif':
case 'png':
case 'bmp':
case 'pdf':
case 'txt':
case 'doc':
case 'docx':
case 'xls':
case 'xlsx':
case 'xlr':
case 'mdf':
case 'ppt':
case 'pptx':
case 'msg':
case 'log':
case 'bak':
case 'xml':
case 'html':
case 'mp3':
case 'm4a':
case 'm3u':
case 'mid':
case 'wma':
case 'wav':
case 'mp4':
case 'mpg':
case 'm4v':
case 'vob':
case 'mnv':
case 'rm':
case 'mov':
case 'flv':
case 'wmv':
return true;
break;
default:
alert('Select a proper file');
return false;
}
}
}
catch (err) {
alert(FileName);
}
}
function extension(fname) {
try {
var pos = fname.lastIndexOf(".");
var strlen = fname.length;
if (pos != -1 && strlen != pos + 1) {
var ext = fname.split(".");
var len = ext.length;
var extension = ext[len - 1].toLowerCase();
} else {
extension = "No extension found";
}
}
catch (errr)
{ }
return extension;
}
当我上传其他文件(如.exe)时,页面仍会刷新并保存文件。我希望当用户上传带有其他扩展名的文件时,页面不应刷新,不应保存文件。请帮帮我!!!
答案 0 :(得分:2)
为什么不使用HTML5方式进行文件选择?
<input type="file" accept="image/*, video/*, audio/* application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint">
您可以随意添加我错过的MIME类型或根据您的意愿调整,但此文件会限制文件类型以支持,因此您不必对其进行明确检查。
答案 1 :(得分:1)
使用jQuery库(jquery.validate.min.js
和additional-methods.js
)的解决方案:
$("#vform").validate({
rules: {
fileName: {
extension: "jpg|gif|png|bmp|pdf|txt|doc|docx|xls|xlsx|xlr|mdf|ppt|pptx|msg|log|bak|xml|html|mp3|m4a|m3u|mid|wma|wav|mp4|mpg|m4v|vob|mnv|rm|mov|flv|wmv"
}
},
messages: {
fileName: "You may not upload this type of file."
}
});
答案 2 :(得分:0)
您可以对文件输入字段使用accept属性,如下所示,
<form action="demo_form.asp">
<input type="file" name="pic" accept="image/*">
<input type="submit">
</form>
语法:
<input accept="file_extension|audio/*|video/*|image/*|media_type">
file_extension--以STOP字符开头的文件扩展名,例如:.gif,.jpg,.png,.doc
audio / * - 接受所有声音文件
视频/ * - 接受所有视频文件
image / * - 接受所有图像文件
media_type - 有效的媒体类型,没有参数。 Look at IANA Media Types获取标准媒体类型的完整列表
否则你可以像下面一样手动检查,
<form action="demo_form.asp" onsubmit='return validate()' method="post">
<input type="file" name="pic">
<input type="submit">
</form>
如果你的验证函数将True作为return返回,则只有表单才会提交,否则什么都不做。