我正在使用带有hapi的Node。
对于文件服务,它最多可以使用1.8 GB文件。当我尝试提供2.4 GB的文件时,似乎出现了问题并且下载了一个空目录。任何线索?
答案 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;
}