axios请求后端接口下载Excel文件
程序员文章站
2024-03-20 17:45:46
...
axios请求后端接口下载Excel文件
引入axios
import axios from 'axios'
export default {
}
/* 导出政策 */
exportPolicy () {
const ids = this.selectPolicyList.map(item => item.id)
const instance = axios.create({
baseURL: '',
responseType: 'blob',
headers: { 'Content-Type': 'application/json ' }
})
this.fullscreenLoading = true
instance
.post('/frontend/api/policy/exportExcel', { ids: ids })
.then((res) => {
this.handlerResponse(res.data)
})
},
// 处理请求回来的json
handlerResponse (data) {
const _this = this
const fileReader = new FileReader()
fileReader.onload = function () {
try {
const jsonData = JSON.parse(fileReader.result) // 说明是普通对象数据,后台转换失败
// console.log('后台返回的信息', jsonData.message)
_this.$message.error(jsonData.message)
setTimeout(() => {
_this.fullscreenLoading = false
}, 2000)
} catch (err) {
// 解析成对象失败,说明是正常的文件流
const content = data
const filename = '行业政策.xls'
const blob = new Blob([content], {
type:
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
})
if (window.navigator.msSaveOrOpenBlob) {
// 兼容IE10
navigator.msSaveBlob(blob, filename)
} else {
// chrome/firefox
const aTag = document.createElement('a')
aTag.download = filename
aTag.href = URL.createObjectURL(blob)
aTag.click()
URL.revokeObjectURL(aTag.href)
}
setTimeout(() => {
_this.fullscreenLoading = false
}, 2000)
}
}
fileReader.readAsText(data)
},
上一篇: node.js之node创建web服务器
下一篇: 二分查找java模板