1.接口导出方式一:文件流下载
downexcel() {
educeAttribute()
.then(response => {
if (response.code === 200) {
// 文件下载
const blob = new Blob([response.data], {
type: 'application/vnd.ms-excel'
})
let link = document.createElement('a')
link.href = URL.createObjectURL(blob)
link.setAttribute('download', response.msg)
link.click()
link = null
this.$message.success('导出成功')
} else {
// 导出失败
this.$message.warning(response.msg)
}
})
},
设置请求返回类型 responseType:'blob'
2.方式二:window.location.href
window.location.href =`${process.env.VUE_APP_BASEURL}接口地址/${参数}`
3.最终版
function blobDownLoad(res, name) {
const content = res.data
let fileName
if (name) {
fileName = name
} else if (res.headers['content-disposition']) {
fileName = decodeURI(res.headers['content-disposition'].split('filename=')[1])
}
const blob = new Blob([content], {
type: content.type
})
// a标签是否有'download'属性
if ('download' in document.createElement('a')) {
const downloadLink = document.createElement('a')
downloadLink.download = fileName
downloadLink.style.display = 'none'
downloadLink.href = window.URL.createObjectURL(blob)
document.body.appendChild(downloadLink)
downloadLink.click()
URL.revokeObjectURL(downloadLink.href)
document.body.removeChild(downloadLink)
} else {
navigator.msSaveBlob(blob, fileName)
}
}