一般实现导出,使用get接口,利用a标签直接调用即可。此种方法存在的问题是:query参数存在一定的长度限制,在参数很多的情况下,不符合业务场景。 故有post接口的导出方法如下: 前置条件:后端返回值为blob流文件。 在post接口中,config参数的配置属性添加如下一条
{ responseType: 'blob' }
在调用接口拿到返回值,调用如下函数方法即可实现导出
_export (data) {
const blob = new Blob([data], {
type: 'application/vnd.ms-excel'
})
const url = window.URL.createObjectURL(blob)
const link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', `${new Date().getTime()}文件.xlsx`) // 文件名和后缀自定义
document.body.appendChild(link)
link.click()
}
参考业务调用如下:
接口xxx调用.then(res=>_export(res))
便实现了文件的导出。