如何在NodeJS中处理未定义的上传

时间:2014-12-03 12:30:09

标签: node.js express

我使用BusBoy插件来处理文件上传。它为事件'file'注册了一个处理程序 当文件完全上传时,处理程序将执行下一个操作。但是当上传文件未定义时,会注册事件处理程序,但事件“文件”永远不会发生。进程停止处理此请求需要一段时间。当我继续做这样的事情超过五次时,节点进程将停止几分钟,它会在几分钟后恢复正常。

然后我如何在NodeJS进程中处理这种情况? 不要告诉我永远不要上传undefined,当文件上传失败时,我认为这种情况也会发生。

2 个答案:

答案 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({
            ....        
         });
    }

});