使用spring框架ResponseEntity實現文件下載
spring框架ResponseEntity實現文件下載
後臺代碼
@RequestMapping("downLoad") public ResponseEntity<byte[]> downloadPromisePdf() { String fileName = "企業誠信守法承諾書.pdf"; try { byte[] pdf = **;//byte文件 String dfileName = new String(fileName.getBytes("gb2312"), "iso8859-1"); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setContentDispositionFormData("attachment", dfileName); return new ResponseEntity<>(pdf, headers, HttpStatus.OK); } catch (BuzEx e){ logger.error( e.getMessage()); }catch (Exception e) { } return null; }
前端直接window.location.href='/downLoad';
ResponseEntity免壓縮多文件下載
免壓縮批量文件下載
後臺ResponseEntity代碼還是一次請求下載一個
前臺js改為發出多個請求
js中先用數組儲存需要下載的文件參數信息,然後循環數組執行下載方法,下載方法則先ajax判斷文件是否存在,是則動態創建a標簽批量下載文件
//獲得文件數組ids後 循環下載方法 $.each(ids,function(i,value){ downLoad(fileFunctionPathArray[i],fileNameInServerArray[i],fileOriginalNameArray[i],ids[i]); }) //下載方法 function downLoad(fileFunctionPath,fileNameInServer,fileOriginalName,ids){ $.ajax({ //檢查文件是否存在 url: "/ResourceManage/resourceDownloaduserLink/checkPermission", data: { sysuserid: localStorage.getItem("id"), resourceid: ids }, success: function (data) {//文件存在則創建動態a標簽批量下載文件 if (data.success) { //ResponseEntity下載文件的url var url = "../filehandle/downLoad.do?filePlatPath=" + "resource&fileFunctionPath=" + fileFunctionPath + "&fileNameInServer=" + fileNameInServer + "&fileOriginalName=" + fileOriginalName; var fileName = fileNameInServer; downloadFile(url,fileName);//動態創建a標簽 批量下載 } } }) } //動態創建a標簽 const downloadFile = (url, fileName = '') => { let eleLink = document.createElement('a'); eleLink.download = fileName; eleLink.style.display = 'none'; eleLink.href = url; // 受瀏覽器安全策略的因素,動態創建的元素必須添加到瀏覽器後才能實施點擊 document.body.appendChild(eleLink); // 觸發點擊 eleLink.click(); // 然後移除 document.body.removeChild(eleLink); };
點擊下載則會 批量同時下載
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- vue導出excel文件流中文亂碼問題及解決
- JS實現單個或多個文件批量下載的方法詳解
- SpringMVC使用ResponseEntity實現文件上傳下載
- 前端使用axios實現下載文件功能的詳細過程
- 如何使用spring ResponseEntity處理http響應