判斷上傳文件類型和文件大小

 使用方式:只須要傳入文件對象和容許上傳的文件類型數組      返回上傳文件的大小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);
		}
	});
}
相關文章
相關標籤/搜索