考虑以下代码,使用nodejs 0.10.22和expressjs 3.x
app.post('/upload', function(req,res){
var size = 0;
var writable = fs.createWriteStream('./example.file');
req.pipe(writable);
req.on('data', function(data){
size += data.length;
if (size > 1048576) {
req.unpipe();
//writable = null;
}
})
res.send('end');
});
当用户上传某些数据(例如文件)时,会创建WriteStream来保存数据
为了限制保存到硬盘的数据量,我有一个'数据'的监听器。当尺寸> 1 Mb,我打电话给req.unpipe()来停止管道。
但是,req保持管道进入可写入状态,最后,example.file将与上传的文件一样大。即使我通过调用writable = null来使writeable无效,req.pipe()仍然将所有数据传递给example.file
我的代码有问题或者这是stream.readable.pipe()方法的错误吗?
答案 0 :(得分:0)
如果你正在使用它,请尝试将你的“/ upload”路线放在express.bodyParser()
之前。