vue下载blob无法获取响应头里面的Content-Disposition来提取文件名 --导出完成代码

 exportClick() {
      //导出
      let par = {}
      downAxiosFile('/personnel/change/perUser/exportXls', par).then((res) => {
        let { data } = res;
        let fileName = decodeURIComponent(res.headers["content-disposition"].split("=")[1])
        if (!data) {
          this.$message.warning('文件下载失败')
          return
        }
        if (typeof window.navigator.msSaveBlob !== 'undefined') {
          window.navigator.msSaveBlob(new Blob([data], { type: 'application/vnd.ms-excel' }), '在职列表.xls')
        } else {
          let url = window.URL.createObjectURL(new Blob([data], { type: 'application/vnd.ms-excel' }))
          let link = document.createElement('a')
          link.style.display = 'none'
          link.href = url
          link.setAttribute('download', fileName)
          document.body.appendChild(link)
          link.click()
          document.body.removeChild(link) //下载完成移除元素
          window.URL.revokeObjectURL(url) //释放掉blob对象
        }
      })
    },

 备注:axios返回的数据要从响应拦截器中取值

posted @ 2022-10-11 17:45  南瓜壳  阅读(994)  评论(0编辑  收藏  举报