vue 前端post文件下载,可blob链接格式下载,可base64格式下载

11 篇文章 0 订阅

blob链接base64链接如下

两种格式展示

项目中三万条数据下载显示失败,所以选了第一种----代码中的  res 是后台返回的流文件。res.data是blob对象,包括size、type2字段与

export function loadFile(res) {
    //后台返回的数据是--文件流的形式----
    //通过请求头声明---responseType: 'blob'---获得blob格式数据,blob为--类文件对象,存储的是二进制数据流
    //如果不想在请求头声明,可通过new Blob([二进制文件流],{type:''})//不推荐
    const a = document.createElement('a')//第1种方式,createObjectURL生成blob链接
    a.style.display = "none"
    let dataUrl = URL.createObjectURL(res.data)
    console.log(dataUrl)
    let fileName = decodeURI(res.headers['content-disposition'].split(';')[1].split('=')[1])
    document.body.appendChild(a)
    a.href = dataUrl
    a.download = fileName + '.xls';
    a.click()
    URL.revokeObjectURL(res.data);
    document.body.removeChild(a)
    //const reader = new FileReader()//第2种方式 FileReader生成base64的链接,正常导出没问题,3万条数据,下载显示失败了
                                     //我的理解是href链接的内容,因为base64格式,字节太多,或者丢失或者不允许所以失败了
    // reader.readAsDataURL(res.data)
    // reader.onload = (e) => {
    //     const a = document.createElement('a')
    //     a.style.display = "none"
    //     let fileName = decodeURI(res.headers['content-disposition'].split(';')[1].split('=')[1]) // 文件名
    //     a.download = fileName
    //     console.log('e.target.resulte.target.result', e.target.result)
    //     a.href = e.target.result
    //     document.body.appendChild(a)
    //     a.click()
    //     document.body.removeChild(a)
    // }
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值