使用流发送大量内容

Send a huge content range using streams

如何使用读取流发送文件的一部分以响应 HTTP 请求?

我想发送任意 Content-Range 个大文件。

当我fs.createReadStream('hugeFile.bin').pipe(response)过滤掉一部分可读流时,我无法使用事件。我可以创建一个伪造的可写流,它省略(如 > /dev/null)一部分数据,但 chunk 大小可能不是要发送的第一部分的倍数。

如何解决问题?

看看https://nodejs.org/dist/latest-v6.x/docs/api/fs.html#fs_fs_createreadstream_path_options

特别是 startend 选项 - 这些选项让您可以设置文件中的字节偏移量以开始和停止读取。

所以基本上你会这样做:

fs.createReadStream('hugeFile.bin', { start: firstByte, end: lastByte }).pipe(response)

或道德等价物,它会做你想做的事。