你不知道的流文件下载

前言

有一种业务需求,运营需要通过前端的查询条件,从后端数据库导出大量数据,假设要导出一个30万条以上数据的Excel文件,而这些数据是随时变动的,每次都需要最新的数据,我们称这种为“现倒”(现场导出),应该怎么做?

肯定有小伙伴说了,这还不简单,请求接口传递筛选项,让后端返回一个文件地址,前端一个A标签download不就完了?

如果后端运行在docker容器中,为安全考虑不提供无权限的公共文件夹路径,而且不能让运营等太久,上传oss再给链接?先不考虑数据时效性,运营也等不了这么久。

这时的你应该怎么做?

后端返回二维数组由前端导出?

数据小的时候这没问题,30万?100万?你猜会是后端卡住,还是数据库卡住?

正确做法

由后端返回二进制流文件,前端创建临时链接,由A标签download


这里注意responseType要为blob

响应头中的文件名bug

文件名用中文会出现乱码

最好用Base64传递,前端使用Base64解码

js 原生的API atob 与 btoa不能解析中文
下面是两种解码方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值