美文网首页
js:下载后端返回的表格

js:下载后端返回的表格

作者: 陈大事_code | 来源:发表于2019-04-30 10:49 被阅读0次

场景:后端的接口返回了一个文件流给我,需要我进行下载这个excel。

    exportExcel() {
      projectExport({ year: this.year }).then(res => {
        let link = document.createElement("a");  // 使用a标签下载
        let blob = new Blob([res]);  // 转为Blob
        let url = window.URL.createObjectURL(blob);  // 创建下载的url
        link.href = url;
        document.body.appendChild(link);
        link.download = `${this.year}年清单表.xlsx`;  // 自定义文件下载的名称
        link.click();
        document.body.removeChild(link);
        window.URL.revokeObjectURL(url);  //  销毁url
      });
    },

其中,

  • window.URL.createObjectURL与window.URL.revokeObjectURL是相对的。第一个方法创建了一个指向这个二进制文件流的url。而第二个方法,则当我们不再需要和这个url的时候就将他进行销毁。
  • link.download代表我们下载之后的文件名,可以自行定义。

注意:

这样的excel是可以下载的,但是下载的文件是打不开的,显示文件损坏。
原因:

  1. 接口未定义返回格式。
  2. 下载文件时,文件后缀名错误。

解决1:

export function export(params) {
  return request({
    url: `url`,
    method: 'get',
    params,
    responseType: 'arraybuffer'
  })
}

加上一个额外的参数:responseType: 'arraybuffer'即可。

解决2:

        link.download = `${this.year}年清单表.xlsx`;  // 自定义文件下载的名称

其中,
由于表格后缀名有xls和xlsx格式,这个格式由后端决定,需与后端沟通决定是哪种格式。如果前后端定义的不一样,也是文件打不开。

相关文章

  • js:下载后端返回的表格

    场景:后端的接口返回了一个文件流给我,需要我进行下载这个excel。 其中, window.URL.createO...

  • js 下载流

    前言 js 下载流文件,如果可以下载后端返回流,如果有异常接口返回json,根据错误码友好提示用户,目前只能下载z...

  • js 下载 后端返回的文件、图片

    一、后端返回的是文件url。 这种可以直接使用ajax请求,得到url地址,在页面模拟一个下载。 示例...

  • 前后端分离vue(axios) + PHP,导出 下载Excel

    需求 N: (导出, 下载Excel 表格) 本次是为了导出 (下载)Excel 表格, 但这次是前后端分离的, ...

  • Blob、URL.createObjectURL、File、Fo

    Blob 背景 后端返回的是JSON格式的数据,那么js可以直接处理,但是后端如果返回二进制文件流,那么js是不可...

  • jwt的token认证完整创建流程

    第一步:在后端下载插件 第二步:在后端routes的users.js页面引入jwt,并在需要的部分生成令牌返回 第...

  • thinkphp处理前端跨域请求

    1、前端js正常ajax请求 后端php返回 2、前端js用ajax跨域请求 thinkphp返回 ajaxRet...

  • Vue3-将流数据转换为文件并实现自动下载

    具体需求:后端接口返回流数据,前端根据接口拿到的流数据转换为excel表格后端接口返回数据示例: 注意:流数据可以...

  • 文件下载的几种方式

    后端下载 向后端发起下载请求,将请求返回的内容通过浏览器下载到本地 通过a标签下载 eg: 点击下载 点击...

  • VUE 前端打包ZIP

    项目要求数据的图片、表格、视频进行zip压缩打包,刚开始的时候是后端返回链接直接下载,有点消耗服务器带宽。然后就想...

网友评论

      本文标题:js:下载后端返回的表格

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