1. 程式人生 > >input 框上傳多個檔案以及檔案校驗

input 框上傳多個檔案以及檔案校驗

1、如何上傳多個檔案

     在input標籤中加入 multiple 屬性,如下

<input type="file" name="file1" id="file1" multiple="multiple"/> 

       當然,這樣也是一樣的:

<input type="file" name="file1" id="file1" multiple/> 

2、如何進行檔案校驗

      可以通過document.getElementById("file1").files;獲取選擇的檔案物件,這是一個數組物件,存放的都是javascript的File物件。通過File物件,可以獲取到檔名、檔案大小、檔案型別等資訊。那麼什麼時候進行校驗呢?可以在選擇了檔案之後,進行校驗,這就需要使用onchange事件,當然也可以在表單提交的時候進行校驗。

如下:

<input type="file" name="file1" id="file1" multiple="multiple" onchange="checkFile(this)"/>

檔案校驗的JS程式碼如下:

function checkFile(el){
    	 var files = el.files;  //獲取選擇的檔案物件
    	 var allowTypes = ["image/jpeg","image/png","image/x-png","image/bmp","image/gif"]; //允許上傳的檔案型別
    	 var maxFileSize = 50 * 1024 * 1024;  //允許上傳的單個檔案的大小限制,最大能上傳50M
    	 var allowUpload = true; //經過校驗之後是否允許上傳
    	 var errorMessage = "";  //校驗檔案之後,檔案不符合要求的提示資訊
    	 
    	 for(var i=0; i< files.length; i++){
    	      var fileName = files[i].name;    //檔名
    	      var fileType = files[i].type;    //檔案型別
    	      var fileSize = files[i].size;    //檔案大小,單位為byte(位元組)
    	      
    	      var typeAccepted = false;
    	      for(var j = 0; j < allowTypes.length; j++){
    	    	  if(allowTypes[j] == fileType){
                      typeAccepted = true;
                      break;
    	    	  }
    	      }
    	      if(typeAccepted != true){
    	    	  errorMessage += fileName + "不是圖片,只能上傳圖片!";
    	    	  allowUpload = false;
    	      }
    	      
    	      if(typeAccepted && fileSize > maxFileSize){
    	    	  errorMessage += fileName+"的檔案大小超出了50M限制!";
    	    	  allowUpload = false;
    	      }
    	 }
    	 
    	 if(allowUpload != true){
    		 el.outerHTML = el.outerHTML; //清空選擇的檔案
    		 alert(errorMessage);
    	 }
     }