Node.js createReadStream未触发关闭事件
我正在尝试下载一个文件,下载后我想从服务器上删除该文件。我正在尝试创建一个流并使用res对其进行管道传输,并侦听close事件以从服务器中删除文件Node.js createReadStream未触发关闭事件,node.js,express,Node.js,Express,我正在尝试下载一个文件,下载后我想从服务器上删除该文件。我正在尝试创建一个流并使用res对其进行管道传输,并侦听close事件以从服务器中删除文件 res.set({ 'Content-Disposition': 'attachment; filename=destination.pdf', 'Content-Type': 'application/pdf' }); var stream = fs.createRea
res.set({
'Content-Disposition': 'attachment; filename=destination.pdf',
'Content-Type': 'application/pdf'
});
var stream = fs.createReadStream(file);
stream.pipe(res).once("close", function () {
stream.destroy();
fs.unlink(file, function (err) {
if (err) {
console.error(err.toString());
} else {
console.warn(file + ' deleted');
}
});
});
但是关闭事件没有触发。您能告诉我们上面的代码吗?直接问题的解决方案是将“关闭”侦听器连接到
流,而不是流.pipe(res)
(返回res
)。但奇怪的是,需要从磁盘读取一次,然后需要将文件与文件系统断开链接,所以请显示此路由实际上要做什么。@idbehold,我正在使用phantomjs生成一份pdf报告,我想在用户下载后从服务器上删除该报告。我的观点是,可能根本不需要将生成的pdf存储在文件系统中。通过phantomjs生成PDF缓冲区/流,然后将其直接写入/管道到响应,而不是文件系统。非常感谢您的帮助,正如您所建议的,现在我使用phantomjs生成流并将其直接管道到响应。