使用方式:只需要传入文件对象和允许上传的文件类型数组 返回上传文件的大小
//获取浏览器
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);
}
});
}