アクシオスより引用
import axios from 'axios'
ダウンロードしたファイルのアドレス結合パラメータcontractUrlメソッドを取得します。
contractUrl(url data) {
return url + (url.indexOf('?') < 0 ? '?' : '&') + this.splitData(data)
}
// 拆分数据
splitData(data) {
let url = ''
for (let k in data) {
if (data.hasOwnProperty(k) && data[k] != undefined) {
let value = data[k] || ''
url = url + '&' + k + '=' + encodeURIComponent(value)
} else {
url = url
}
}
return url ? url.substring(1) : ''
}
let URLs = url
let URLe = that.contractUrl(URLs, listQuery)
axios({
// 用axios发送post请求
method: 'get',
url: URLe, // 请求地址
data: data, // 参数
headers: {
token: localStorage.getItem('token'),
'Content-Type': 'application/json',
},
responseType: 'blob', // 表明返回服务器返回的数类据型
})
.then((res) => {
//获取后台下载失败返回的信息
const fileReader = new FileReader()
if (res.data.type === 'application/json') {
// 说明是普通对象数据,读取信息
const fileReader = new FileReader()
fileReader.onloadend = () => {
const jsonData = JSON.parse(fileReader.result)
// 后台信息
that.$message.error(jsonData.message)
setTimeout(() => {
this.tableState = true
}, 1000)
}
fileReader.readAsText(res.data)
} else {
const link = document.createElement('a')
let blob = new Blob([res.data], { type: 'application/zip' })
link.style.display = 'none'
link.href = URL.createObjectURL(blob)
const date = currentTime('')
link.setAttribute('download', 'xx记录' + date + '.zip')
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
setTimeout(() => {
this.tableState = true
}, 1000)
}
console.log(res)
})
.catch((error) => {
that.$message.warning('暂无数据')
setTimeout(() => {
this.tableState = true
}, 1000)
})