判断上传文件类型和文件大小

 使用方式:只需要传入文件对象和允许上传的文件类型数组      返回上传文件的大小

//获取浏览器
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:

<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:

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);
		}
	});
}

 

转载于:https://my.oschina.net/u/3183495/blog/1186767

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值