post导出功能

97 阅读1分钟

一般实现导出,使用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))

便实现了文件的导出。