提前道歉,我在这里有几个关于createReadStream()的问题。
基本上我正在动态构建一个文件,并使用fs将其流式传输给用户一旦完成。 我使用.pipe()以确保我正确地进行节流(如果缓冲区已满,请停止读取,一旦不满再次开始读取等)。 这是到目前为止我代码的样本。
http.createServer(function(req, res) {
var stream = fs.createReadStream('<filepath>/example.pdf', {bufferSize: 64 * 1024})
stream.pipe(res);
}).listen(3002, function() {
console.log('Server listening on port 3002')
})
我在另一个StackOverflow的问题(抱歉,我找不到了)中读到,如果您使用常规的res.send()和res.end(),那么.pipe()非常有效,因为它调用了.send和.end并添加了节流。
对于大多数情况来说,这很好用,但是我想在流完成后删除文件,不使用.pipe()意味着我必须自己处理节流以获得回调。
所以我猜我需要创建自己的虚拟“res”对象,它具有 .send() 和 .end() 方法来执行 res 通常的操作,然而在 .end() 中,我将加入额外的代码来清理生成的文件。我的问题基本上是如何实现这一点?
非常感谢帮助!