用戶端驗證上傳檔案大小

來源:互聯網
上載者:User

昨天,今天,這兩天的時間在研究一個問題,如何在用戶端對上傳的檔案進行大小限制。在網上有搜了很久。Firefox下可以直接獲得上傳檔案的大小進行判斷: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{
       //Firefox擷取路徑 
           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功能,期待更好更簡潔的方法出現,讓使用者用著更省心。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.