前情提要:
頁面上有個這個小需求。
點擊下方按鈕,只能上傳音視頻。
於是,已自己的想法,寫了一個笨辦法。
沒辦法,自己對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 不能為空字符串或nullmatch(/^(.*)(\.)(.{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判斷上傳文件類型
by不言謝