我使用BusBoy插件来处理文件上传。它为事件'file'注册了一个处理程序 当文件完全上传时,处理程序将执行下一个操作。但是当上传文件未定义时,会注册事件处理程序,但事件“文件”永远不会发生。进程停止处理此请求需要一段时间。当我继续做这样的事情超过五次时,节点进程将停止几分钟,它会在几分钟后恢复正常。
然后我如何在NodeJS进程中处理这种情况? 不要告诉我永远不要上传undefined,当文件上传失败时,我认为这种情况也会发生。
答案 0 :(得分:1)
您可以使用'完成'事件来停止处理
busboy.on('finish', function() {
//your code to stop processing
});
当触发上传(表单)数据中的所有文件/字段事件时,将触发此“结束”事件。 (如果未定义文件/字段,则忽略触发器。)
此外,建议您通过pipe
request
您的节点busboy
req.pipe(busboy);
答案 1 :(得分:0)
我通过这个解决了这个问题。 为'file'事件设置变量标志,当事件发生时,标志将在其处理程序中设置为true。因为'file'事件发生在req.end事件之前,所以我为req的结束事件注册了一个处理程序。
req.on('end',function(){
if(!flag){
res.json({
....
});
}
});