React下载文件-Base64类型数据

 请求数据:

const downloadFile=()=>{
    Axios({
        url:'xxx',//接口地址
        method:'',//请求方式
        headers:{},//请求头
        data  //请求参数
    }).then(res=>{
        let reader=new FileReader()
        const blob=new Blob([res.data])
        reader.readAsText(blob)
        reader.onload=e=>{
            if(JSON.parse(e.target.result).status===200){
                const fileName='附件名'        //附件名包含附件类型
                if('download' in document.createElement('a')){
                    console.log('下载成功')
                    let data=base64ToBlob(JSON.parse(e.target.result).dataInfo)
                    const link=document.createElement('a')
                    link.download=fileName
                    link.style.display='none'
                    link.href=URL.createObjectURL(data)
                    document.body.appendChild(link)
                    link.click()
                    URL.revokeObjectURL(link.href)
                    document.body.removeChild(link)
                }else{
                    navigator.msSaveBlob(data,FileName)
                }
            }
        }
    })
}

将base64数据转为blob

const base64ToBlob=(code)=>{
    const raw=window.atob(code)
    const rawLength=raw.length
    const uInt8Array=new Init8Array(rawLength)
    for(let i=0;i<rawLength;i++){
        uInt8Array[i]=raw.charCodeAt(i)
    }
    return new Blob([uInt8Array])
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值