Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js createReadStream未触发关闭事件_Node.js_Express - Fatal编程技术网

Node.js createReadStream未触发关闭事件

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对其进行管道传输,并侦听close事件以从服务器中删除文件

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生成流并将其直接管道到响应。