• 前后端分离,导出数据为文件或下载文件,前端如何处理后端返回的数据


      在前后端分离的项目中涉及跨域问题,通常都会使用token进行验证。

      最近在前后端分离的项目中在一个问题上搞了很久,就是以前下载附件或者导出数据为文件的时候,在以前的那些项目前端可以直接用 window.location.href='后端url',window.open(url)或者其他的方式,但是在前后端分离中这种方式不能把token也一起传到后端进行请求,导致权限不够访问不了后端。

      最后在多方面的尝试下,也和同事一起讨论,最后这么解决(直接附代码):

     1  /**
     2      * 导出用户列表
     3      */
     4     private exportUsers(){
     5         this.http.doPost({
     6             url: 'system/sysmanager/user/exportUsers', 
     7             responseType:ResponseContentType.Blob,  
     8             body:this.form,  //传入后端的表单数据
     9             success: (req, res) => {
    10                 var blob = new Blob([res.json()]); //创建一个blob对象
    11                 var a = document.createElement('a'); //创建一个<a></a>标签
    12                 a.href = URL.createObjectURL(blob); // response is a blob
    13                 a.download = "用户列表.xlsx";  //文件名称
    14                 a.style.display = 'none';
    15                 document.body.appendChild(a);
    16                 a.click();
    17                 a.remove();
    18             }
    19         });
    20    }

    开始以为后端代码需要更改,其实后端代码不需要更改,输出的是输出流、或者字节数组前端都可以进行转换。

    这个博客有点简短,如果有什么意见或者问题欢迎大家指教。

  • 相关阅读:
    redis状态与性能监控
    redis-stat 安装
    Redis-stat is not found
    查看Redis信息和状态
    查看、分析memcached使用状态
    Memcache内存分配策略
    memcached server LRU 深入分析
    Memcached常用命令及使用说明
    Web-超大文件上传-如何上传文件-大文件上传
    PHP-超大文件上传-如何上传文件-大文件上传
  • 原文地址:https://www.cnblogs.com/sunshine6/p/8296945.html
Copyright © 2020-2023  润新知