Nodejs|Nodejs 较大文件流下载服务

【Nodejs|Nodejs 较大文件流下载服务】通过Nodejs实现较大文件流下载功能
1. 使用TypeScript 2. 使用swc做代码转译 3. 使用ES6模块引入机制 4. 使用管道流提供Excel下载服务 主要代码

// 需要引入的模块有 import ExcelJS from 'exceljs'; import ExcelJS from 'exceljs'; @MRoute('/api/file') async getExcel(req: any, res: any) { const options = { stream: res, // 若这里不配置则需要使用workbook.stream.pipe(res); 写入到res流中 useStyles: true, useSharedStrings: true }; const workbook = new ExcelJS.stream.xlsx.WorkbookWriter(options); const worksheet = workbook.addWorksheet('数据流', { views: [{ state: 'frozen', xSplit: 1, ySplit: 3 }] }); let filename = "数据流表"; res.setHeader('Connection', 'keep-alive'); // 保持链接一直在 res.setHeader('Content-Type', 'application/octet-stream'); // 文件类型为文件流形式 res.setHeader("Content-Disposition", "attachment; filename=" + encodeURIComponent(filename) + ".xlsx"); res.flushHeaders(); // 先将headers返回// @ts-ignore // workbook.stream.pipe(res); // 使用管道流将xlsx流数据直接写入response流中for (let index = 0; index < 1000000; index++) { const row = []; for (let i = 0; i < 20; i++) { row.push(i); } worksheet.addRow(row).commit(); // commit() 提交流数据 } workbook.commit(); // 提交整个Excel工作簿}

代码示例 源码地址

    推荐阅读