提前抱歉,我有几个关于 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() 我会放置额外的代码来清理生成的文件。我的问题基本上是我将如何做到这一点?
非常感谢您的帮助,谢谢!