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

2022-07-29,,,,

项目中遇到需要文件下载的功能,使用 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

《blob,token验证文件下载方法封装.doc》

下载本文的Word格式文档,以方便收藏与打印。