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()中?