欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

blob,token验证文件下载方法封装

程序员文章站 2024-01-19 09:45:40
项目中遇到需要文件下载的功能,使用window.open方式在新页面打开链接下载,但是新页面无法传递token信息,于是让后台关闭token验证。const exportUserUrl = `${_baseUrl}/sys/user/exportUser`;export const exportUserApi = function (json) { let data = `?areaId=${json.areaId}&areaType=${json.areaType}&id=$....

项目中遇到需要文件下载的功能,使用 window.open方式在新页面打开链接下载,但是新页面无法传递token信息,于是让后台关闭token验证。

const exportUserUrl = `${_baseUrl}/sys/user/exportUser`;
export const exportUserApi = function (json) {
  let data = `?areaId=${json.areaId}&areaType=${json.areaType}&id=${json.id}&name=${json.name}&no=${json.no}&isDanger=${json.isDanger}&loginName=${json.loginName}&officeId=${json.officeId}`
  window.open(exportUserUrl + data, '_blank')
}

但这样总归是不太好,于是使用下面的方法

// 封装下载方法
export function exportFile (url, params = {}) {
  return new Promise((resolve, reject) => {
    axios.get(url, {
      params: params,
      responseType: 'blob'
    }).then(response => {
        resolve(response)
    }).catch(err => {
        reject(err);
      })
  })
}

// 下载接口
export const exportDataApi = json => exportFile(`${_record}/highriskOperate/exportData`, json);

// 调用下载接口
       let json = {}
       exportDataApi(json).then(res => {
        let fileName = 'test'
        let blob = new Blob([res], { type: 'application/x-xls' })
        if (window.navigator.msSaveOrOpenBlob) {
          navigator.msSaveBlob(blob, fileName);
        } else {
          let link = document.createElement('a');
          link.href = window.URL.createObjectURL(blob);
          link.download = fileName;
          link.click();
          window.URL.revokeObjectURL(link.href);
        }
      })

 

本文地址:https://blog.csdn.net/qq_37167086/article/details/108977945