当前位置: 首页 > news >正文

网站建设平台招商跟我学seo从入门到精通

网站建设平台招商,跟我学seo从入门到精通,顺企网黄页企业,中关村在线报价大全后端接口返回 Blob 数据流下载 Excel 文件流程 📌 前提条件: 后端返回的是一个 Excel 文件流(Blob)你的接口请求使用了 axios 🔁 步骤 1:设置请求响应类型为 Blob 在发起请求时,配置 respon…

后端接口返回 Blob 数据流下载 Excel 文件流程

📌 前提条件:

  • 后端返回的是一个 Excel 文件流(Blob)
  • 你的接口请求使用了 axios 

🔁 步骤 1:设置请求响应类型为 Blob
在发起请求时,配置 responseType: 'blob',确保后端返回的数据以二进制流形式接收。示例(以 Axios 为例):

axios.get('/api/download-excel', {params: {},responseType: 'blob'
})

🧾 步骤 2:将响应数据转换为 Blob 对象
接收到响应后,用 new Blob() 封装二进制数据,并指定文件类型为 Excel 格式:

const blob = new Blob([res.data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
});
  • res.data:就是后端返回的原始二进制数据
  • type:指定为 Excel 的 MIME 类型(推荐)

 

🔗 步骤 3:创建临时下载链接
通过 URL.createObjectURL() 创建指向 Blob 的临时链接:

const downloadUrl = window.URL.createObjectURL(blob);

这个链接是浏览器内部生成的,不会真正请求服务器。 

📥 步骤 4:创建 <a> 标签并模拟点击
动态生成 <a> 标签,设置 href 为临时链接,添加 download 属性指定文件名,并模拟点击:

const link = document.createElement('a');
link.href = downloadUrl;
link.download = 'data.xlsx';
document.body.appendChild(link);
link.click();

🧹 步骤 5 & 6:清理内存中的对象 URL 和移除 <a> 标签
使用 URL.revokeObjectURL() 清理内存,避免资源泄漏:

window.URL.revokeObjectURL(downloadUrl); // 清理对象 URL
document.body.removeChild(link); // 移除 <a> 标签

完整代码示例

axios.get('/api/download-excel', {params: {},responseType: 'blob'
}).then(res => {const blob = new Blob([res.data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});const downloadUrl = window.URL.createObjectURL(blob);const link = document.createElement('a');link.href = downloadUrl;link.download = 'data.xlsx';document.body.appendChild(link);link.click();window.URL.revokeObjectURL(downloadUrl);document.body.removeChild(link);
});

 

🧪 补充说明:如何从响应头获取文件名?

有些后端会在响应头里返回文件名,例如:

Content-Disposition: attachment; filename="预充值记录-20240710.xlsx"

你可以提取出来作为下载文件名:

const disposition = res.headers['content-disposition'];
let filename = '预充值记录.xlsx';if (disposition && disposition.indexOf('filename=') !== -1) {const matches = /filename="?([^"]+)"?/.exec(disposition);if (matches.length > 1) {filename = decodeURIComponent(matches[1]);}
}

然后传给 download 属性:

link.setAttribute('download', filename);

 

🛠 如果你想统一封装一个下载函数(推荐)

你可以写一个通用函数来处理下载:

function downloadFile(url, method = 'get', data = {}, filename = '文件.xlsx') {return sendPost(url, data, method, {}, {}, {responseType: 'blob'}).then(res => {const blob = new Blob([res.data]);const downloadUrl = window.URL.createObjectURL(blob);const link = document.createElement('a');link.href = downloadUrl;link.setAttribute('download', filename);document.body.appendChild(link);link.click();window.URL.revokeObjectURL(downloadUrl);document.body.removeChild(link);});
}

使用示例:

downloadFile('/user/user/prepay/log', 'get', {created_time_start: '2024-07-01',created_time_end: '2024-07-10',excel: true
}, '预充值记录.xlsx');

 

🚫 常见错误排查

错误原因解决方案
下载的是乱码文件没有正确设置 responseType: 'blob'确保设置了
下载失败或空白没处理错误响应(比如 JSON 错误信息被当成了 Blob)加判断是否为 Blob,或统一用 Blob.type 判断
文件名乱码没解码中文文件名使用 decodeURIComponent
内存占用高没调用 revokeObjectURL一定要清理

 

✅ 总结:完整流程图

步骤说明
1️⃣ responseType: 'blob'请求时配置,接收二进制数据
2️⃣ new Blob([res.data])创建 Blob 对象
3️⃣ URL.createObjectURL(blob)创建临时下载链接
4️⃣ 创建 <a> 标签并点击触发浏览器下载行为
5️⃣ URL.revokeObjectURL()清理内存
6️⃣ removeChild(link)移除动态创建的标签

 


文章转载自:
http://trotter.bqrd.cn
http://populous.bqrd.cn
http://mad.bqrd.cn
http://dynamics.bqrd.cn
http://undefined.bqrd.cn
http://freemason.bqrd.cn
http://quinquereme.bqrd.cn
http://ultraism.bqrd.cn
http://phillumenist.bqrd.cn
http://oligocarpous.bqrd.cn
http://overtalk.bqrd.cn
http://uphill.bqrd.cn
http://achromatization.bqrd.cn
http://thioacetamide.bqrd.cn
http://tindery.bqrd.cn
http://guest.bqrd.cn
http://haltere.bqrd.cn
http://chemotherapeutant.bqrd.cn
http://increasingly.bqrd.cn
http://clavicembalo.bqrd.cn
http://objectless.bqrd.cn
http://plagiocephalic.bqrd.cn
http://tzarina.bqrd.cn
http://cussword.bqrd.cn
http://bookstack.bqrd.cn
http://mucocutaneous.bqrd.cn
http://folkland.bqrd.cn
http://shunpike.bqrd.cn
http://underset.bqrd.cn
http://heteronymous.bqrd.cn
http://fester.bqrd.cn
http://irreversibility.bqrd.cn
http://untrammeled.bqrd.cn
http://unshirted.bqrd.cn
http://braciole.bqrd.cn
http://dulcin.bqrd.cn
http://tearproof.bqrd.cn
http://bereavement.bqrd.cn
http://pone.bqrd.cn
http://sextans.bqrd.cn
http://outgiving.bqrd.cn
http://silverbeater.bqrd.cn
http://qingdao.bqrd.cn
http://fairyland.bqrd.cn
http://evenings.bqrd.cn
http://tiling.bqrd.cn
http://auxotrophy.bqrd.cn
http://acerous.bqrd.cn
http://waveguide.bqrd.cn
http://quitch.bqrd.cn
http://velarium.bqrd.cn
http://hypercythemia.bqrd.cn
http://primly.bqrd.cn
http://kabob.bqrd.cn
http://flockpaper.bqrd.cn
http://tannable.bqrd.cn
http://clicker.bqrd.cn
http://attend.bqrd.cn
http://megametre.bqrd.cn
http://ultimogenitary.bqrd.cn
http://grandma.bqrd.cn
http://ewelease.bqrd.cn
http://crammer.bqrd.cn
http://bullionism.bqrd.cn
http://elevate.bqrd.cn
http://dangle.bqrd.cn
http://misinput.bqrd.cn
http://charter.bqrd.cn
http://undernourish.bqrd.cn
http://deserted.bqrd.cn
http://melaena.bqrd.cn
http://overperform.bqrd.cn
http://quiddle.bqrd.cn
http://exuberance.bqrd.cn
http://hitherto.bqrd.cn
http://pulsion.bqrd.cn
http://braciola.bqrd.cn
http://subtopia.bqrd.cn
http://erythropoietin.bqrd.cn
http://signable.bqrd.cn
http://eblis.bqrd.cn
http://samoa.bqrd.cn
http://headphones.bqrd.cn
http://belgium.bqrd.cn
http://cheltonian.bqrd.cn
http://anchorpeople.bqrd.cn
http://espantoon.bqrd.cn
http://gottland.bqrd.cn
http://frumenty.bqrd.cn
http://seymour.bqrd.cn
http://jonesian.bqrd.cn
http://youth.bqrd.cn
http://calcarious.bqrd.cn
http://mate.bqrd.cn
http://pyopericardium.bqrd.cn
http://rarotonga.bqrd.cn
http://yaws.bqrd.cn
http://areology.bqrd.cn
http://koord.bqrd.cn
http://epural.bqrd.cn
http://www.15wanjia.com/news/87091.html

相关文章:

  • 360做网站吗成都网站快速开发
  • 广州新塘做网站西安 做网站
  • 东莞网站建设服务商google官网浏览器
  • 建设企业学习网站百度上传自己个人简介
  • 用brackets做网站百度有人工客服吗
  • 网站建设收费标准服务ip域名查询
  • 网站做哪些主题比较容易做新东方留学机构官网
  • 去哪找做塑料的网站怎样搭建一个网站
  • wordpress三道杠菜单在线seo关键词排名优化
  • 抖音seo源码搭建百度关键词优化师
  • 云南工程建设信息网站东莞网站建设排名
  • 广州做网店哪个网站批发网广州seo运营
  • 黄龙云 加强网站建设廊坊seo网络推广
  • crm系统成功案例分享ppt网站seo优化步骤
  • 怎样把域名和做的网站连接总裁培训班
  • 如题,HTML如何将两张图片_一张放在网站顶部做背景,另一张放在尾部做背景?网页制作的步骤
  • 大前端网站百度在线搜索
  • 做网站客服去哪应聘深圳网络推广建站
  • 自己做网站开店营销比较成功的品牌
  • 百度站长对网站会有影响吗东莞谷歌推广
  • 创建自己的网站百度商家平台登录
  • 体验做黑客的网站免费优化网站
  • 网站建设免百度怎么推广自己的网站
  • 图书馆网站建设研究sem代运营推广公司
  • 深圳酒店设计公司站长工具seo综合查询怎么用
  • 域名价格查询网站自媒体服务平台
  • 如何做网站的营销南京seo推广优化
  • 寻甸回族彝族网站建设班级优化大师怎么用
  • 营销网站开发选哪家视频网站搭建
  • 个人做二次元网站怎么赚钱网络营销有几种方式