先请求完成在下载
get_merged_illegal_event_exportExcel(params).then(res => {
const blob = new Blob([res.data], {
type: res.headers['content-type']
})
const downloadElement = document.createElement('a')
const href = window.URL.createObjectURL(blob)
downloadElement.style.display = 'none'
downloadElement.href = href
let filename = 'data.xlsx'
const dispositions = res.headers['content-disposition'].split(';')
for (let disposition in dispositions) {
let dName = dispositions[disposition]
if (dName.includes('filename')) {
filename = dName.replace('filename=', '')
filename = decodeURIComponent(filename)
}
}
downloadElement.download = filename //下载后文件名
document.body.appendChild(downloadElement)
downloadElement.click() //点击下载
document.body.removeChild(downloadElement) //下载完成移除元素
window.URL.revokeObjectURL(href) //释放掉blob对象
})
绕过请求,让浏览器接收文件流,下载文件
需要后端配合
//buildUrl(query) {
//由于绕过了请求,后端没有办法鉴权,需要把token当成参数传进去
//let token = getToken()
//获取baseUrl
//let baseUrl = localStorage.getItem('Internet') || window.globalConfig.targetUrl
//将baseUrl与参数、token拼接
//url = `${baseUrl}/ris/merged_illegal_event/exportExcel?groupId=${query.groupId}&startTime=${query.startTime}&endTime=${query.endTime}&&isMisinformation=${query.isMisinformation}&token=${token}`
//return url
//},
buildUrl(query) {
//由于绕过了请求,后端没有办法鉴权,需要把token当成参数传进去
query.token = getToken()
let baseUrl = localStorage.getItem('Internet') || window.globalConfig.targetUrl
function toStringParam(object) {
const params = []
for (const key in object) {
if (Object.hasOwnProperty.call(object, key)) {
const value = object[key]
if (typeof value !== 'undefined') {
params.push(`${key}=${value}`)
}
}
}
return '?' + params.join('&')
}
return `${baseUrl}/ris/merged_illegal_event/exportExcel${toStringParam(query)}`
},
loadFile(data, filename = '导出表格.xlsx') {
const downloadElement = document.createElement('a')
const href = this.buildUrl(data)
downloadElement.style.display = 'none'
downloadElement.href = href
downloadElement.download = filename //下载后文件名
document.body.appendChild(downloadElement)
downloadElement.click() //点击下载
document.body.removeChild(downloadElement) //下载完成移除元素
}