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工作簿}
代码示例 源码地址
推荐阅读
- django-前后端交互
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 使用composer自动加载类文件
- ssh生成公钥秘钥
- Android系统启动之init.rc文件解析过程
- 微信小程序基础知识
- 误删/清空.bashrc文件/内容
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- 插件化无法获取或找到.so文件
- locate搜索