后端响应头和响应体已经设置完了
需要a标签下载
因为你获取回来的是一个二进制流 所以需要转一下base64 然后塞到a标签中下载 对照如下,变更下名称,
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()
},
参考这个