Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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
Javascript 节点js流中的执行顺序_Javascript_Node.js_Express_Stream_Graphicsmagick - Fatal编程技术网

Javascript 节点js流中的执行顺序

Javascript 节点js流中的执行顺序,javascript,node.js,express,stream,graphicsmagick,Javascript,Node.js,Express,Stream,Graphicsmagick,我想在将映像保存到磁盘之前验证它。我正在使用图书馆 //运行Express应用程序 app.post('/image',函数(req,res){ 变量流= 总经理(需求) .size({bufferStream:true},函数(err,size){ 如果(size.width>2000){ return res.send('太大,正在中止上载!'); } }) .stream(函数(err、stdout、stderr){ 保存(stdout,res); }); }); 功能保存(流,

我想在将映像保存到磁盘之前验证它。我正在使用图书馆

//运行Express应用程序
app.post('/image',函数(req,res){
变量流=
总经理(需求)
.size({bufferStream:true},函数(err,size){
如果(size.width>2000){
return res.send('太大,正在中止上载!');
}
})
.stream(函数(err、stdout、stderr){
保存(stdout,res);
});    
});
功能保存(流,res){
var file=fs.createWriteStream('./test image.png');
stream.pipe(文件);
res.send('将图像保存到磁盘');

}
GM将所有操作添加到列表中,并在写入操作之前执行这些操作,因此这种行为是有意义的。这里有一个解决方法:

app.post('/image', function(req, res) {                                 
  var file = fs.createWriteStream('./test-image.png');

  var stream = 
    gm(req)
     .size({ bufferStream: true }, function(err, size) {    
       if (size.width > 2000) {
        return res.send('Too big, aborting upload!');
       }
       this.stream().pipe(file);  
       res.send('Saving image to disk');

});

谢谢回复。我也在这种情况下,我想做更多的检查(格式等)。那么,您是否建议我将这些检查嵌套在.size()中?