栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使客户端下载动态生成的非常大的文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使客户端下载动态生成的非常大的文件

Excel导出:

使用流。以下是一个大概的想法:

  1. 使用exceljs模块。因为它具有针对此确切问题的流API。

    var Excel = require('exceljs')
  2. 由于我们正在尝试启动下载。编写适当的标题以响应。

        res.status(200);    res.setHeader('Content-disposition', 'attachment; filename=db_dump.xls');    res.setHeader('Content-type', 'application/vnd.ms-excel');
  1. 创建一个由Streaming Excel writer支持的工作簿。提供给writer的流是服务器响应。
        var options = {        stream: res, // write to server response        useStyles: false,        useSharedStrings: false    };    var workbook = new Excel.stream.xlsx.WorkbookWriter(options);
  1. 现在,所有输出流均已设置。对于输入流,最好使用将查询结果/光标作为流提供的DB驱动程序。

  2. 定义将1个表转储到1个工作表的异步函数。

       var tableToSheet = function (name, done) {        var str = dbDriver.query('SELECt * FROM ' + name).stream();        var sheet = workbook.addWorksheet(name);        str.on('data', function (d) { sheet.addRow(d).commit(); // format object if required        });        str.on('end', function () { sheet.commit(); done();        });        str.on('error', function (err) { done(err);        });    }
  1. 现在,让我们使用异步模块的mapSeries导出一些数据库表:
        async.mapSeries(['cars','planes','trucks'],tableToSheet,function(err){       if(err){         // log error       }       res.end();    })

CSV导出:

对于单个表/收集模块的CSV导出,可以使用fast-csv:

    // response headers as usual    res.status(200);    res.setHeader('Content-disposition', 'attachment; filename=mytable_dump.csv');    res.setHeader('Content-type', 'text/csv');    // create csv stream    var csv = require('fast-csv');    var csvStr = csv.createWriteStream({headers: true});    // open database stream    var dbStr = dbDriver.query('SELECt * from mytable').stream();    // connect the streams    dbStr.pipe(csvStr).pipe(res);

现在,您正在将数据从数据库流式传输到HTTP响应,并快速将其转换为xls / csv格式。无需将全部数据缓冲或存储在内存或文件中。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377049.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号