使用spring框架ResponseEntity實(shí)現(xiàn)文件下載
spring框架ResponseEntity實(shí)現(xiàn)文件下載
后臺(tái)代碼
@RequestMapping("downLoad")
public ResponseEntity<byte[]> downloadPromisePdf() {
? String fileName = "企業(yè)誠(chéng)信守法承諾書.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免壓縮多文件下載
免壓縮批量文件下載
后臺(tái)ResponseEntity代碼還是一次請(qǐng)求下載一個(gè)
前臺(tái)js改為發(fā)出多個(gè)請(qǐng)求
js中先用數(shù)組儲(chǔ)存需要下載的文件參數(shù)信息,然后循環(huán)數(shù)組執(zhí)行下載方法,下載方法則先ajax判斷文件是否存在,是則動(dòng)態(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)建動(dò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);//動(dòng)態(tài)創(chuàng)建a標(biāo)簽 批量下載
}
}
})
}
//動(dòng)態(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;
// 受瀏覽器安全策略的因素,動(dòng)態(tài)創(chuàng)建的元素必須添加到瀏覽器后才能實(shí)施點(diǎn)擊
document.body.appendChild(eleLink);
// 觸發(fā)點(diǎn)擊
eleLink.click();
// 然后移除
document.body.removeChild(eleLink);
};
點(diǎn)擊下載則會(huì) 批量同時(shí)下載

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Springboot3?ResponseEntity?完全使用案例
- SpringBoot中ResponseEntity的使用方法舉例詳解
- 一文詳解Spring中ResponseEntity包裝器的使用
- SpringBoot的ResponseEntity類返回給前端具體講解
- SpringBoot ResponseEntity標(biāo)識(shí)Http響應(yīng)方式
- 解決springboot responseentity<string>亂碼問題
- springmvc @ResponseStatus和ResponseEntity的使用
- SpringMVC使用ResponseEntity實(shí)現(xiàn)文件上傳下載
- Spring ResponseEntity的使用詳解
相關(guān)文章
Springboot中動(dòng)態(tài)語言groovy介紹
Apache的Groovy是Java平臺(tái)上設(shè)計(jì)的面向?qū)ο缶幊陶Z言,這門動(dòng)態(tài)語言擁有類似Python、Ruby和Smalltalk中的一些特性,可以作為Java平臺(tái)的腳本語言使用,這篇文章主要介紹了springboot中如何使用groovy,需要的朋友可以參考下2022-09-09
java微信企業(yè)號(hào)開發(fā)之開發(fā)模式的開啟
這篇文章主要為大家詳細(xì)介紹了java微信企業(yè)號(hào)開發(fā)之開發(fā)模式的開啟方法,感興趣的小伙伴們可以參考一下2016-06-06
簡(jiǎn)單了解Java多線程實(shí)現(xiàn)的四種方式
這篇文章主要介紹了簡(jiǎn)單了解Java多線程實(shí)現(xiàn)的四種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Mybatis控制臺(tái)打印SQL語句的兩種實(shí)現(xiàn)方式
在使用Mybatis開發(fā)時(shí),由于可以動(dòng)態(tài)拼接SQL,當(dāng)動(dòng)態(tài)SQL拼接塊過多,直接從*mapper.xml中找出完整的SQL較難,此時(shí),可以通過兩種方法調(diào)試出SQL,方法一,將ibatislog4j運(yùn)行級(jí)別調(diào)到DEBUG,在控制臺(tái)打印出ibatis運(yùn)行的SQL語句2024-10-10
淺談java分頁(yè)三個(gè)類 PageBean ResponseUtil StringUtil
下面小編就為大家?guī)硪黄獪\談java分頁(yè)三個(gè)類 PageBean ResponseUtil StringUtil。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07

