0

我有一个带有 node.js 和 express 的网络服务器。当我提供一个很大的文本文件时,加载到浏览器中需要很长时间。想象一个 34 MB 的文本文件被提供给客户端,他只需要下载 34 MB 来检查日志文件中的内容。

有什么我可以做的吗?也许分部分上桌?喜欢:第 1/10 部分 - 第 10/10 部分

4

2 回答 2

1

要提供部分文件,您可以获取一个字节范围,并使用文件系统函数读取该范围fs.createReadStream()。例如,如果你想要一个文件的十分之一,你可以测量它的大小,并计算字节范围。

app.get('/log', function(req, res) {
  fs.stat('log.txt', function(err, stats) {
    var end = Math.ceil(stats.size / 10);
    var stream = fs.createReadStream('log.txt', {start: 0, end: end});

    var log = new String();
    readable.on('data', function(chunk) {
      log += chunk;
    });

    readable.on('end', function() {
      res.send(log);
    });
  });
});

您可以随时修改代码以从 10-20% 发送,或发送文件的最后 10%,等等。

于 2013-09-08T23:11:48.587 回答
0

您是否研究过节点流?您可以使用它们以小块的形式发送数据,并提供反馈以显示已下载的数据量。

于 2013-09-08T21:45:57.853 回答