input 框上傳多個檔案以及檔案校驗
阿新 • • 發佈:2019-01-23
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); } }