• 微服务之excel导出


    问题场景

    在网关添加了权限校验,要求请求在header中携带token。前端获取到token之后存储在localstorage,请求时在请求拦截中取到token放在header中。excel导出一般的做法是用a链接指向excel导出接口,或者使用window.location.href = url 的方式,问题是这两种方式无法在header中携带token 。

    解决方法

    • 使用axios发送post请求,将获取到的body数据放入Blog对象中,js代码使用Blog创建一个 url
    • 同时创建一个 a链接,将url赋值给a.href,js触发a.click下载文件。

    代码实现

         exportExcel() {
            this.$axios(
              {
                method: 'post',
                url: '/api/addressbook/addressbookPerson/exportPersonlist',
                responseType: 'arraybuffer',
                data: {
                  personName: this.queryPersonName
                }
              }
            ).then(res => {
              this.saveData(res.data, "通讯录人员.xlsx")
            }).catch((error) => {
    
            })
          },
          saveData(data, filename) {
            let blob = new Blob([data], {type: "application/vnd.ms-excel;charset=utf-8;"});
            let objectUrl = URL.createObjectURL(blob);
            let a = document.createElement('a');
            document.body.appendChild(a);
            a.style = "display:none";
            a.href = objectUrl;
            a.download = filename;
            a.click();
          }
    
    
  • 相关阅读:
    超媒体
    超文本
    视频文件格式
    web.py 模板错误记录
    pip常用记录
    微信公众号绑定服务器 Flask版
    scrapy 简单防封
    python 手写队列
    jQuery个人总结
    PHP用url传递数组
  • 原文地址:https://www.cnblogs.com/huangll99/p/9679231.html
Copyright © 2020-2023  润新知