后端返回二进制文件,js 下载为xls或xlsx文件

时间:2024-05-31 18:45:41
export const exportFile = (res: Blob, name: string, type: string, fileType: string = '.csv') => {
  const blob = new Blob([res], { type })
  const downloadElement = document.createElement('a')
  const href = window.URL.createObjectURL(blob) // 创建下载的链接
  downloadElement.href = href
  downloadElement.download = name + fileType // 下载后文件名
  document.body.appendChild(downloadElement)
  downloadElement.click() // 点击下载
  document.body.removeChild(downloadElement) // 下载完成移除元素
  window.URL.revokeObjectURL(href)
}
exportFile(
          res.data,
          titleExport,
          'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
          '.xlsx'
        )

就可以导出或者下载.csv.xls.xlsx

下载的文档打不开,无法打开文件的问题处理:

打印请求返回的数据,这个data就是打不开
在这里插入图片描述

需要在请求文件的接口上加上这个

responseType: ‘blob’

这样返回的,如图就能正常打开了:
在这里插入图片描述