我们的思路其实就是将二进制流以ajax的方式down下来,存储进blob当中,在采取base64的方式进行转换,因为a标签是可以直接访问base64的。
downExcel() {
var xhr = new XMLHttpRequest()
xhr.open('get', '下载路径', true)
xhr.setRequestHeader('Authorization', getToken())// 此处设置token请求头 注意一定要将请求头代码设置在open下方
xhr.responseType = 'blob' // 使用blob 存储二进制数据
xhr.onload = function() {
console.log(xhr)
if (this.status === 200) {
var blob = this.response
var reader = new FileReader()
reader.readAsDataURL(blob) // 二进制流转为base64,a标签可直接访问href
reader.onload = function(e) {
var a = document.createElement('a') // 转换完成,创建一个a标签用于下载
a.download = '文件模板' + '.xls'// 下载命名
a.href = e.target.result
window.document.querySelector('body').append(a)// 追加进body体内
a.click()// 触发点击事件
a.remove()// 移除追加的a标签
}
}
}
xhr.send()
},