使用spring框架ResponseEntity实现文件下载
程序员文章站
2022-06-09 19:05:35
目录spring框架responseentity实现文件下载后台代码responseentity免压缩多文件下载免压缩批量文件下载spring框架responseentity实现文件下载后台代码@re...
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); };
点击下载则会 批量同时下载
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
推荐阅读