JS验证上传的文件是否为音视频文件格式

前情提要:


页面上有个这个小需求。

点击下方按钮,只能上传音视频。

于是,已自己的想法,写了一个笨办法。

没办法,自己对JS 还是七窍通六窍,一窍不通,好的业务逻辑,根本想不出来,

不过能解决问题,就好,就好。
JS验证上传的文件是否为音视频文件格式


业务需求:


  音视频文件格式,一共这些格式需要判断:

 【.avi,.wmv,.mpg,.mpeg,.mov,.rm,.ram,.swf,.flv,.mp4,.mp3,.wma,.avi,.rm,.rmvb,.flv,.mpg,.mkv

代码过程:


1、想法:因为需要判断的结尾格式,太多了,直接写在 if 判断里,太乱了。就先用数组装起来。

//用来验证的后缀,如果还有其它格式,可以添加在right_type;
var right_type = new Array("avi","wmv","mpg","mpeg","mov","rm","ram","swf","flv","mp4","mp3","wma","avi","rm","rmvb","flv","mpg","mkv")    

2、获取到界面上 上传的值,进行简单的处理。

注意点:

要进行 .match(/^(.*)(.)(.{1,8})$/)[3] 正则表达式 匹配处理,其中 value 不能为空字符串或null
match(/^(.*)(.)(.{1,8})$/)[3] 正则表达式的具体分析,已单开一篇写了。

这里需要了解自行点击下方文章链接:

JS中,正则表达式:match(/^(.*)(.)(.{1,8})$/)[3]分析

if(document.getElementById("video").value!=''){
   type = document.getElementById("video").value.match(/^(.*)(.)(.{1,8})$/)[3];
//防止出问题,把获取到的所有结尾格式,全部转化为小写
   type = type.toUpperCase();
}

 

3、用获取到的上传值,和需要验证的 音视频结尾格式,进行判断。

function isCon(arr, val){ 
    for(var i=0; i<arr.length; i++){ 
        if(arr[i] == val) 
            return true; 
        }
            return false; 
}
var result = isCon(right_type, type);
//可以打印开看结果,是布尔类型(Boolean),也就是: true 或 false
console.log(isCon(right_type, type)); 

4、最后判断完,就可以进行业务逻辑了。

if(result == false){
    alert("请检查您上传的文件是否为音视频");  
         return false;
 }else{ 
     //这里就可以写正常的业务逻辑了         
 }

参看文档:

1.  js验证上传的文件是否为JPEG,PNG,JPG,GIF格式。

2.  JS判断上传文件类型

3.  js判断上传文件类型判断FileUpload文件类型代码

by不言谢