使用spring框架ResponseEntity實(shí)現(xiàn)文件下載
spring框架ResponseEntity實(shí)現(xiàn)文件下載
后臺代碼
@RequestMapping("downLoad") public ResponseEntity<byte[]> downloadPromisePdf() { ? String fileName = "企業(yè)誠信守法承諾書.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改為發(fā)出多個請求
js中先用數(shù)組儲存需要下載的文件參數(shù)信息,然后循環(huán)數(shù)組執(zhí)行下載方法,下載方法則先ajax判斷文件是否存在,是則動態(tài)創(chuàng)建a標(biāo)簽批量下載文件
//獲得文件數(shù)組ids后 循環(huán)下載方法 $.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) {//文件存在則創(chuàng)建動態(tài)a標(biāo)簽批量下載文件 if (data.success) { //ResponseEntity下載文件的url var url = "../filehandle/downLoad.do?filePlatPath=" + "resource&fileFunctionPath=" + fileFunctionPath + "&fileNameInServer=" + fileNameInServer + "&fileOriginalName=" + fileOriginalName; var fileName = fileNameInServer; downloadFile(url,fileName);//動態(tài)創(chuàng)建a標(biāo)簽 批量下載 } } }) } //動態(tài)創(chuàng)建a標(biāo)簽 const downloadFile = (url, fileName = '') => { let eleLink = document.createElement('a'); eleLink.download = fileName; eleLink.style.display = 'none'; eleLink.href = url; // 受瀏覽器安全策略的因素,動態(tài)創(chuàng)建的元素必須添加到瀏覽器后才能實(shí)施點(diǎn)擊 document.body.appendChild(eleLink); // 觸發(fā)點(diǎn)擊 eleLink.click(); // 然后移除 document.body.removeChild(eleLink); };
點(diǎn)擊下載則會 批量同時下載
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
- 解決springboot responseentity<string>亂碼問題
- 使用ResponseEntity作為的返回值的應(yīng)用
- 常用的ResponseEntity.BodyBuilder和自定義ResponseEntity的實(shí)例
- springmvc @ResponseStatus和ResponseEntity的使用
- SpringMVC使用ResponseEntity實(shí)現(xiàn)文件上傳下載
- SpringMVC返回的ResponseEntity出現(xiàn)亂碼及解決
- 如何使用spring ResponseEntity處理http響應(yīng)
- 使用ResponseEntity處理API返回問題
相關(guān)文章
解決IDEA右鍵沒有創(chuàng)建新的package選項(xiàng)的情況
這篇文章主要介紹了解決IDEA右鍵沒有創(chuàng)建新的package選項(xiàng)的情況,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02詳解servlet調(diào)用的幾種簡單方式總結(jié)
這篇文章主要介紹了詳解servlet調(diào)用的幾種簡單方式總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01SpringBoot自定義maven-plugin插件整合asm代碼插樁
本文主要介紹了SpringBoot自定義maven-plugin插件整合asm代碼插樁,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02Springcloud?feign傳日期類型參數(shù)報錯的解決方案
這篇文章主要介紹了Springcloud?feign傳日期類型參數(shù)報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03Java中使用synchronized關(guān)鍵字實(shí)現(xiàn)簡單同步操作示例
這篇文章主要介紹了Java中使用synchronized關(guān)鍵字實(shí)現(xiàn)簡單同步操作示例,本文起講解了synchronized修飾函數(shù)、synchronized修飾代碼塊、synchronized修飾靜態(tài)方法等內(nèi)容,需要的朋友可以參考下2015-04-04Mybatis-plus自定義SQL注入器查詢@TableLogic邏輯刪除后的數(shù)據(jù)詳解
這篇文章主要給大家介紹了關(guān)于Mybatis-plus自定義SQL注入器查詢@TableLogic邏輯刪除后的數(shù)據(jù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2023-03-03