在javascript中检查文件扩展名的问题
Issue in javascript for checking files extension
我写了用于检查文件扩展名的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)时,页面仍然会刷新并保存文件。我希望当用户上传带有其他扩展名的文件时,页面不应刷新,也不应保存文件。请帮帮我!!
为什么不直接使用HTML5方式进行文件选择?
<input type="file" accept="image/*, video/*, audio/* application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint">
您可以随时添加我错过的MIME类型或随意调整,但是此文件将限制文件类型以支持,因此您不必对其进行显式检查。
使用 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."
}
});
演示小提琴
您可以将 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/* -- 接受
所有声音文件video/* -- 接受
所有视频文件image/* -- 接受
所有图像文件media_type -- 不带参数的有效媒体类型。查看 IANA 媒体类型,获取标准媒体类型
的完整列表
否则您可以像下面这样手动检查,
<form action="demo_form.asp" onsubmit='return validate()' method="post">
<input type="file" name="pic">
<input type="submit">
</form>
如果您的验证函数给出 True 作为返回,则只有表单将提交,否则什么也不做。
相关文章:
- TableExport jquery插件:文件名和扩展名问题
- 未捕获的类型错误:无法读取属性'addEventListener'的null chrome扩展名
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 从安卓设备将图像上传到服务器时,文件扩展名错误
- 有人能告诉我如何在cent-os中打开扩展名为.dat的FIle吗
- 在上传之前,我可以在代码中的哪里将文件扩展名更改为小写
- TypeScript解释了各种文件扩展名
- 保存输入字段Chrome扩展名
- Web浏览器扩展名通用文件
- '的文件格式和扩展名;file.xls'don't与fileSaver.js匹配
- 如何通过chrome扩展名获取所有CSS和Javascript文件
- 如何从 URL 中获取文件名和扩展名
- 在javascript中检查文件扩展名的问题
- 在 iFrame 中注入 JS 文件,通过 Google chrome 扩展名中的 ContentScript 进行
- 在自定义元素中扩展 HTMLCanvasElement 问题
- 如何使用office.js检查未保存文件的具体文件扩展名
- 用于检查文件扩展名不工作的Javascript If语句
- 如何从chrome扩展名读取文件
- 忽略文件扩展名的正则表达式
- PhantomJS无法打开扩展名未知的本地文件