前端下载 node 返回的 excel 数据

背景:node 服务生成 excel 表格数据流,由前端生成下载链接

解决方法,主要分两步:

(1)node 服务上:基于 node-xlsx 生成 buffer 数据流,如下:

import xlsx from 'node-xlsx';

ctx.body = xlsx.build(excelData); // excelData 数据格式参考  node-xlsx,直接返回 buffer 数据流

(2)前端接收、处理 excel buffer 数据流,并生成临时下载链接:

const res = fetch(url, { method: 'post' }); // 通过原生 fetch 获取数据,fetch 参考 文档

const blobData = await res.blob(); // 取出数据

uploadExcel (blobData , '文件名');

const uploadExcel = (data, fileName) => {

    const blob =new Blob([data], {

        type:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'

    }); // 转换成 URL.create​ObjectURL() 识别的 blob

    const url = URL.createObjectURL(blob);

    const aLink = document.createElement('a');

    aLink.download = fileName;

    aLink.href = url;

    aLink.click();

    URL.revokeObjectURL(blob); // URL.revokeObjectURL() 释通过 URL.create​ObjectURL() 创建而存在的对象

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容