昨天,今天,这两天的时间在研究一个问题,如何在客户端对上传的文件进行大小限制。在网上有搜了很久。火狐下可以直接获得上传文件的大小进行判断: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功能,期待更好更简洁的方法出现,让用户用着更省心。