1、当后端接口返回文件流时,需前端导出excel文件,在请求中添加 responseType: 'blob'限制条件,根据返回的文件流导出
封装的方法:
/**
* 公共的导出excel方法
* @param {*} content 后端接口返回的二进制文件
* @param {*} name 导出的文件名
*/
ExportExcel(content, name) {
let fileName = name
if (!name) {
fileName = '导出清单.xls'
} else {
fileName = name + '.xls'
}
const blob = new Blob([content]) // 创建一个类文件对象:Blob对象表示一个不可变的、原始数据的类文件对象
const url = window.URL.createObjectURL(blob) // URL.createObjectURL(object)表示生成一个File对象或Blob对象
const dom = document.createElement('a') // 设置一个隐藏的a标签,href为输出流,设置download
dom.style.display = 'none'
dom.href = url
dom.setAttribute('download', fileName) // 指示浏览器下载url,而不是导航到它;因此将提示用户将其保存为本地文件
document.body.appendChild(dom)
dom.click()
window.URL.revokeObjectURL(dom.href) // 释放URL 对象
document.body.removeChild(dom)
},
请求方法
export function queryExportExcel(params) {
return request({
url: ' ',
method: 'post',
responseType: 'blob',
data: params
})
}
导出
this.ExportExcel(返回的文件流, '事件清单')