文件上傳監聽
1 <a v-show="filesArr.length<5" @click="fileUpLoad()"> 2 點擊選中附件 3 </a> 4 5 <div style="display:none;"> 6 <form id = "form1" action="##" method="post" enctype="multipart/form-data"> 7 <input multiple="multiple" id="fileUP" type="file" onchange="fileChange()" name="file1" value="選擇文件" > 8 9 <input type="button" value="上傳" onclick="fileUpLoad()"> 10 </form> 11 </div>
觸發文件選擇框彈出
1 function fileUpLoad(){ //觸發 input的點擊事件,彈出文件選擇框2 2 $("#fileUP").click();4 3 }
文件監聽方法,頁面加載后執行:fileAddEventListener();
1 var fileUP = document.getElementById('fileUP'); 2 fileUP.addEventListener('change', function() { 3 var t_files = this.files; 4 if(t_files.length>5){ 5 t_files.value=''; 6 top.postMessage({func:'msg',data:{idNum:app.idnum,icon:'2',anim:'6',msg:'文件數量超限,最多支持5個文件!'}},"*"); 7 console.log('文件數量超限,最多支持5個文件!'); 8 }; 9 //上傳文件 將文件存入新的數組,進行操作 10 for (var i = 0;i<t_files.length; i++) { 11 if(t_files[i].size/1024/1024<101){//單個文件限制100M 12 app.filesArr.push(t_files[i]); 13 }else{ 14 var thisNames =t_files[i].name; 15 var thisSize =t_files[i].size/1024/1024+'MB'; 16 var msg ='存在超過100MB的單個文件!' 17 top.postMessage({func:'msg',data:{idNum:app.idnum,icon:'2',anim:'6',msg:msg}},"*"); 18 } 19 }; 20 //清空file 21 var file = document.getElementById("fileUP"); 22 // for IE, Opera, Safari, Chrome 23 if (file.outerHTML) { 24 file.outerHTML = file.outerHTML; 25 } else { // FF(包括3.5) 26 file.value = ""; 27 }; 28 //再次設置監聽 29 fileAddEventListener(); 30 }, false);
1 var form = new FormData(); 2 3 for (var i = 0;i<app.filesArr.length; i++) { 4 // 文件名稱,文件對象 5 form.append(app.filesArr[i].name, app.filesArr[i]); 6 }
1 $.ajax({ 2 //幾個參數需要注意一下 3 type: "POST",//方法類型 4 dataType: "json",//預期服務器返回的數據類型 5 url: "../../insertFile.action" ,//url 6 //data: $('#form1').serialize(), 7 data:form, 8 // contentType:"multipart/form-data", 9 contentType: false, 10 processData: false, 11 async: false, 12 // cache: false, 13 success: function (json_data) { 14 // alert("恭喜你!上傳成功"); 15 console.log(json_data); 16 name= json_data; 17 }, 18 error : function() { 19 //alert("異常!"); 20 name= ""; 21 } 22 });
頁面提示:
默認狀態:
選擇1-4個文件時:
選擇5個文件時:
文件名 file.name
文件大小file.size
文件批量下載方法
1 function downloadFunc(name, href) { 2 var a = document.createElement("a"), //創建a標簽 3 e = document.createEvent("MouseEvents"); //創建鼠標事件對象 4 e.initEvent("click", false, false); //初始化事件對象 5 a.href = href; //設置下載地址 6 a.download = 'download'; //設置下載文件名 7 a.dispatchEvent(e); //給指定的元素,執行事件click事件 8 }; 9 function downName(hrefArr) {//hrefArr 地址數組../../downLoadFile.action?path=D:apache-tomcat-8.5.35webapps%255Cservice_file/20190415161813900_%25E6%2589%2593%25E4%25B8%258D%25E5%25BC%2580%2520.jpg&filename=20190415161813900_%25E6%2589%2593%2 10 for (let index = 0; index < hrefArr.length; index++) { 11 downloadFunc('第' + index + '個文件', hrefArr[index]); 12 } 13 } 14