原生js实现后端返回文件流Blob,前端下载文件

一、问题引入

列表数据导出表格文件,后端接口返回文件流blob,前端下载

二、解决方式

原生xhr:

get方式:将参数拼接url上

// params: ?xxx=yyy&xxx=yyy
xhr.open('get','/url xxx'+params) xhr.responseType = 'blob' xhr.onreadystatechange = ()=>{ if(xhr.readyState == 4 && xhr.status == 200){ let blob = new Blob([xhr.response]) let url = window.URL.createObjectURL(blob) let a = document.createElement('a') a.href = url a.download = 'xxx.xls' a.click() window.URL.revokeObjectURL(url) } } xhr.send()

post方式:

xhr.open('post','/url')
            xhr.responseType = 'blob'
            xhr.onreadystatechange = ()=>{
                if(xhr.readyState == 4 && xhr.status == 200){
                    let blob = new Blob([xhr.response])
                    let url = window.URL.createObjectURL(blob)
                    let a = document.createElement('a')
                    a.href = url
                    a.download = 'xxx.xls'
                    a.click()
                    window.URL.revokeObjectURL(url)
                }
            }
xhr.setRequestHeader('content-type', 'application/json') xhr.send(JSON.stringfy(data))

 

posted @ 2023-06-21 11:02  盼星星盼太阳  阅读(1265)  评论(0)    收藏  举报