使用spring框架ResponseEntity實現文件下載
更新時間:2022年02月12日 15:24:23 作者:王威振的csdn
這篇文章主要介紹了使用spring框架ResponseEntity實現文件下載,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
spring框架ResponseEntity實現文件下載
后臺代碼
@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中先用數組儲存需要下載的文件參數信息,然后循環(huán)數組執(zhí)行下載方法,下載方法則先ajax判斷文件是否存在,是則動態(tài)創(chuàng)建a標簽批量下載文件
//獲得文件數組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標簽批量下載文件
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標簽 批量下載
}
}
})
}
//動態(tài)創(chuàng)建a標簽
const downloadFile = (url, fileName = '') => {
let eleLink = document.createElement('a');
eleLink.download = fileName;
eleLink.style.display = 'none';
eleLink.href = url;
// 受瀏覽器安全策略的因素,動態(tài)創(chuàng)建的元素必須添加到瀏覽器后才能實施點擊
document.body.appendChild(eleLink);
// 觸發(fā)點擊
eleLink.click();
// 然后移除
document.body.removeChild(eleLink);
};
點擊下載則會 批量同時下載

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
解決IDEA右鍵沒有創(chuàng)建新的package選項的情況
這篇文章主要介紹了解決IDEA右鍵沒有創(chuàng)建新的package選項的情況,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
SpringBoot自定義maven-plugin插件整合asm代碼插樁
本文主要介紹了SpringBoot自定義maven-plugin插件整合asm代碼插樁,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
Springcloud?feign傳日期類型參數報錯的解決方案
這篇文章主要介紹了Springcloud?feign傳日期類型參數報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Java中使用synchronized關鍵字實現簡單同步操作示例
這篇文章主要介紹了Java中使用synchronized關鍵字實現簡單同步操作示例,本文起講解了synchronized修飾函數、synchronized修飾代碼塊、synchronized修飾靜態(tài)方法等內容,需要的朋友可以參考下2015-04-04
Mybatis-plus自定義SQL注入器查詢@TableLogic邏輯刪除后的數據詳解
這篇文章主要給大家介紹了關于Mybatis-plus自定義SQL注入器查詢@TableLogic邏輯刪除后的數據的相關資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2023-03-03

