前端下载 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() 创建而存在的对象

}

你可能感兴趣的:(前端下载 node 返回的 excel 数据)