vue下载excel权限限制处理

 在开发过程中会遇到下载excel但是需要传token来验证的问题,一般情况下是用直接指向地址来实现,但是token校验没办法实现,所以就用到了blod

 一般情况下:

var pathurl = process.env.VUE_APP_CUSTOMERRL_URL + 'xxx/xxxx';
window.open(pathurl, '_blank')

采用blod:

1:

var xhr = new XMLHttpRequest();
var formData = new FormData(); xhr.open('get',process.env.VUE_APP_CUSTOMERRL_URL + 'xxx/xxxx'); xhr.setRequestHeader("Authorization",'bearer '+localStorage.getItem("access_token"));  xhr.responseType = 'blob'; xhr.onload = function (e) { let blob = new Blob([xhr.response], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'}); let downloadElement = document.createElement('a'); let href = window.URL.createObjectURL(blob); //创建下载的链接 downloadElement.href = href; downloadElement.download = 'demo.xlsx'; //下载后文件名 document.body.appendChild(downloadElement); downloadElement.click(); //点击下载 document.body.removeChild(downloadElement); //下载完成移除元素 window.URL.revokeObjectURL(href); //释放掉blob对象 }; xhr.send(formData);

 2,

export const exportFileMaterials= (data) => {
  return http({
      method: 'post',
      headers: {
         'Content-Type': 'application/json'
      },
      responseType: 'blob',
      url: process.env.VUE_APP_ORDERLIST_URL + `order/getAgentOrderListExcel`,
      data
  })
}

//引用
 let obj={
            updateUser:this.updateUser
          }
           exportFileMaterials(JSON.stringify(obj)).then(res => {
              var blob = new Blob([res]);
              var url = window.URL.createObjectURL(blob);
              var aLink = document.createElement("a");
              aLink.style.display = "none";
              aLink.href = url;
              aLink.download = '主数据'+'.xlsx'; //下载后文件名
              document.body.appendChild(aLink);
              aLink.click();
              document.body.removeChild(aLink); //下载完成移除元素
              window.URL.revokeObjectURL(url); //释放掉blob对象
           })

 

posted @ 2019-09-29 11:36  陪伴者  阅读(1288)  评论(0编辑  收藏  举报