美文网首页
导出后台返回的excel文件流

导出后台返回的excel文件流

作者: 活在初音的未来 | 来源:发表于2018-12-17 15:21 被阅读0次
概述: 大部分情况下,我们是直接访问提供的download链接来直接下载文件。但某些时候,为了保证信息安全,可能需要提交token来验证用户信息。

参考:js要怎么接收后端传的excel文件流?jello chen的回答

jello chen的回答中,提供了两种方法。

第一种是通过的a标签直接下载:

  <a href="<你的返回流的Action路径>" >下载</a>

转化为js代码:

      let elink = document.createElement('a');
      elink.download = "download.xls";
      elink.href = `${url}?token=${token}&${hash}`;
      elink.click();

第二种方法是通过XMLHttpRequest来实现的,代码如下(有部分修改):

    <script type="text/javascript">
        function download(filename) {
            let oReq = new XMLHttpRequest();
            oReq.open("GET", "<你的返回流的Action路径>", true);
            oReq.responseType = "blob";

            //  设置验证密匙
            oReq.setRequestHeader("token",token);
            oReq.setRequestHeader("loginName",localStorage.getItem('username') || '');

            oReq.onload = function () {
                var content = oReq.response;
                var blob = new Blob([content]);

                //  创建a标签,下载处理过的文件流
                var elink = document.createElement('a');
                elink.download = filename;
                elink.href = URL.createObjectURL(blob);
                elink.click();
            };
            oReq.send();
        }
    </script>

然后将起转化为fetch方式:

  let newOptions = {
      loginName: localStorage.getItem('username') || '',
      'Content-Type': 'application/form-data; charset=utf-8',
      token,
  }

  fetch("<你的返回流的Action路径>", newOptions, { responseType: 'blob'})
  .then(response => {
      // 注意,该处并非response.json()
      return response.blob();
  })
  .then(res => {
      var blob = new Blob([res]);
      let elink = document.createElement('a');

      elink.download = "download.xls";
      elink.href = URL.createObjectURL(blob);
      elink.click();
  })
  .catch(e => {
    console.log('error:' + e)
  })

因为没有post方式的接口,所以没有测试post的请求。

相关文章

  • 导出后台返回的excel文件流

    概述: 大部分情况下,我们是直接访问提供的download链接来直接下载文件。但某些时候,为了保证信息安全,可能需...

  • vue导出excel文件

    向后台传递不同的参数值,后台查询出符合条件的数据,以文件流的格式返回前端,前端再导出为Excel。如果像普通的方式...

  • 文件导出

    导出excel。点击导出后,请求后台接口,根据后台返回的文件流下载对应的文件。后期也可以根据需要把文件类型也用参数...

  • 2020-10-19 JS导出excel的格式

    导出的excel为.xlsx格式res为接口返回的文件流格式,可以自定义 导出的excel为.xls格式

  • 将页面表格数据(列表)导出为excel

    将后台返回的数据v-for展示,现在将展示的table数据导出为excel文件,实质就是将返回的列表写入excel...

  • ajax导出excel

    ajax 是无法直接导出excel的,因为ajax返回值只能是字符流,而导出excel是后台往浏览器中写入二进制的...

  • 前端保存二进制文件流返回excel-利用隐藏表单

    前言:前端导出excel,之前一直是后端返回文件一个链接(直接下载)。这次excel导出采用后端返回二进制流,前端...

  • Web优雅的实现大数据量Excel导出

    在做系统后台的时候,一般Excel表导出的方案是在服务器生成Excel表,返回给浏览器Excel文件地址,触发下载...

  • Vue+axios实现下载文件流功能

    功能描述 点击“导出数据”按钮,向后台发送axios请求,实现下载Excel文件的功能。 实现步骤 确认后端返回的...

  • 导出(下载)

    后台返回文件流 word excel bug:下载后的文件,打不开解决办法:请求时,加 responseType:...

网友评论

      本文标题:导出后台返回的excel文件流

      本文链接:https://www.haomeiwen.com/subject/ivzqkqtx.html