昨天,今天,这两天的时间在研究一个问题,如何在客户端对上传的文件进行大小限制。在网上有搜了很久。火狐下可以直接获得上传文件的大小进行判断:fileupload.files[0].fileSize;
ie下就不同了,首先需要获得本地文件的路径,开启安全设置ActiveX功能后,才可以获取文件大小,进行判断,具体代码如下:
function checkFileSize(){
var agent = window.navigator.userAgent;
var fileupload = document.getElementById("upfile");
var isIE7 = agent.indexOf('MSIE 7.0') != -1;
var isIE8 = agent.indexOf('MSIE 8.0') != -1;
var maxSize = 2000000;
try{
//火狐获取路径
if (agent.indexOf("Firefox") >= 1) {
var fileSize = fileupload.files[0].fileSize;
} else if (isIE7 || isIE8) { //IE7和IE8获得文件路径
fileupload.select();
filepath = document.selection.createRange().text;
var aa = new ActiveXObject("Scripting.FileSystemObject");
var fileSize = aa.GetFile(filepath).size;
} else { //IE6获得文件路径
filepath = fileupload.value;
var aa = new ActiveXObject("Scripting.FileSystemObject");
var fileSize = aa.GetFile(filepath).size;
}
if(fileSize > maxSize) {
alert("上传文件不可超过2MB!");
return false;
}
}catch(e){
alert("请修改IE浏览器ActiveX安全设置为启用~!");
return false;
}
return true;
}
总的来说不太理想,如果客户去用了,还需要去开启什么ActiveX功能,期待更好更简洁的方法出现,让用户用着更省心。
转载于:https://blog.51cto.com/3071373/616606