使用方式:只須要傳入文件對象和容許上傳的文件類型數組 返回上傳文件的大小javascript
//獲取瀏覽器 function getBrowserInfo(){ var agent = navigator.userAgent.toLowerCase(); return agent; } // 判斷上傳文件的類型和文件大小 function judgeFileType(fileObj,typeArr){ var fileEnd = fileObj.value.toLowerCase().substr(fileObj.value.lastIndexOf(".")); var isFileType = false; for(var i = 0;i < typeArr.length;i++){ if(fileEnd == typeArr[i]){ isFileType = true; break; } } if(isFileType){ var filesize; var browser = getBrowserInfo(); if(browser.indexOf("msie") > 0){ var regStr_ie = /msie [\d.]+;/gi ; var versionNum = (browser.match(regStr_ie)+"").replace(/[^0-9.]/ig,""); if(versionNum >= 10){ filesize = fileObj.files[0].size; } if(versionNum < 10){ try{ fileObj.select(); //fileObj.blur(); 嵌入框架下不能使用 若是不加會出現拒絕訪問 document.getElementById("fileDiv").focus(); // 使用一個包含file上傳框的div能夠解決 var fso = new ActiveXObject("Scripting.FileSystemObject"); var filePath = document.selection.createRange().text; if(fso.FileExists(filePath)){ filesize = fso.GetFile(filePath).size; } }catch(e){ alert(e+"\n"+"若是錯誤爲:Error:Automation 服務器不能建立對象;"+"\n"+"請按如下方法配置瀏覽器:"+"\n"+"請打開 【Internet選項-安全-Internet-自定義級別-ActiveX控件和插件-對未標記爲可安全執行腳本的ActiveX控件初始化並執行腳本(不安全)-點擊啓用-肯定】"); return window.location.reload(); } } } //firefox //Chrome if(browser.indexOf("firefox") > 0 || browser.indexOf("chrome") > 0 ){ filesize = fileObj.files[0].size; } return filesize; }else{ alert("只能上傳"+typeArr.toString()+"格式的文件,建議文件名不要有空格"); return 0; } }
Eg:html
html:java
<form id="voucherForm" enctype="multipart/form-data" > <div id="fileDiv"> 選擇文件:<input type="file" name="myFile" id="Document_file" /> </div> <button type="button" onclick="submitBtn()">保存</button> </form>
js:ajax
function submitBtn(){ var fileObj = document.getElementById("Document_file"); var typeArr = [".doc",".docx",".xls",".xlsx",".txt",".pdf"]; var fileValue = fileObj.value; var fileSingleSize = 2 * 1024 * 1024; var fileSize; if(fileValue.length > 0){ fileSize = judgeFileType(fileObj,typeArr); } if(fileSize > fileSingleSize){ alert("文件大小不符合要求,單個文件限制2M以內"); return; } if(fileSize == 0){ return; } $("#voucherForm").ajaxSubmit({ type : "POST", url : url, success : function(jsonData){ console.log(jsonData); } }); }