节点无法提供大文件?

时间:2017-11-30 21:19:57

标签: node.js file hapijs static-files

我正在使用带有hapi的Node。

对于文件服务,它最多可以使用1.8 GB文件。当我尝试提供2.4 GB的文件时,似乎出现了问题并且下载了一个空目录。任何线索?

1 个答案:

答案 0 :(得分:1)

尝试使用res.pipe以块的形式发送文件。这是我用于流式传输大文件的一些示例代码。但它不是完整的代码。它应该足以引导你朝着正确的方向前进。

if (req.headers.range) {
  contentType = mime.lookup(filePath);
  var range = req.headers.range;
  var parts = range.replace(/bytes=/, "").split("-");
  var partialstart = parts[0] || "0";
  var partialend = parts[1];

  var start = parseInt(partialstart, 10);
  var end = partialend ? parseInt(partialend, 10) : fileSize - 1;
  var chunksize = (end - start) + 1;
  var file = fs.createReadStream(filePath, {
    start: start,
    end: end
  });
  res.writeHead(206, {
    'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize,
    'Accept-Ranges': 'bytes',
    'Content-Length': chunksize,
    'Content-Type': contentType
  });
  file.pipe(res);
  return;
}