使用流发送大量内容
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。
特别是 start
和 end
选项 - 这些选项让您可以设置文件中的字节偏移量以开始和停止读取。
所以基本上你会这样做:
fs.createReadStream('hugeFile.bin', { start: firstByte, end: lastByte }).pipe(response)
或道德等价物,它会做你想做的事。
如何使用读取流发送文件的一部分以响应 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。
特别是 start
和 end
选项 - 这些选项让您可以设置文件中的字节偏移量以开始和停止读取。
所以基本上你会这样做:
fs.createReadStream('hugeFile.bin', { start: firstByte, end: lastByte }).pipe(response)
或道德等价物,它会做你想做的事。