原生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))

浙公网安备 33010602011771号