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])
}

猜你喜欢

转载自blog.csdn.net/ifmushroom/article/details/118365681