将接口返回的字节流转成excel并下载下来

3 阅读1分钟
 exportAllTaskOfGenList(params).then((res) => {
          const { data, headers } = res // 这里的res 要返回所有的response 
          const fileName = decodeURI(headers['content-disposition'].split("filename*=utf-8''")[1].replace(/"/g, ''))
          window.downloadBlobFileToJson(fileName, data)
          this.loadingExport = false
        })
 window.downloadBlobFileToJson = function(fileName, content) {
    // 把blod类型转成json
    const fileReader = new FileReader()
    fileReader.readAsText(content)
    fileReader.onload = () => {
      try {
       // 目前这里必报错
        const jsonRes = JSON.parse(fileReader.result)
        vm.$message({
          msg: jsonRes.message,
          type: 'error',
          background: true
        })
      } catch (err) {
       // 所以会执行这里进入到创建a标签进行下载
        this.downloadBlobFile(fileName, content)
      }
    }
  },
  downloadBlobFile(fileName, content) {
    const link = document.createElement('a')
    const blob = new Blob([content], { type: content.type })
    link.style.display = 'none'
    link.href = URL.createObjectURL(blob)
    link.setAttribute('download', `${fileName}`)
    document.body.appendChild(link)
    link.click()
    document.body.removeChild(link)
  },