2014-12-03 27 views
0

我使用BusBoy插件來處理文件上傳。它爲文件上傳完成後發生的 事件'文件'註冊處理程序,然後處理程序將執行下一個操作。但是當上傳文件未定義時,事件處理程序已註冊,但事件「文件」從不發生。過程停止處理此請求需要花費時間。當我繼續做這樣的事情超過五次時,節點進程會停止幾分鐘,幾分鐘後就會恢復正常。如何在NodeJS中處理未定義的上傳

那麼我該如何處理NodeJS過程中的這種情況? 不要告訴我永遠不要上傳undefined,當文件上傳失敗時,我認爲這種情況也會發生。

回答

1

你可以使用「完成」事件停止處理

busboy.on('finish', function() { 
//your code to stop processing 
}); 

這「完成」事件時,在上傳的所有文件/場活動(形式)的數據已經觸發將觸發。 (如果文件/字段未定義,則忽略觸發器)。

進一步建議通過busboy

req.pipe(busboy); 
+0

雖然設置完成事件的處理程序並沒有幫助,但你激勵我,無論如何謝謝你。我的解決方案 – suemi 2014-12-04 05:04:54

0

你的情況來重新檢查,以pipe您的節點request我已經通過這個解決了這個問題。 爲'file'事件設置一個變量標誌,當事件發生時,該標誌將在其處理程序中設置爲true。因爲'file'事件發生在req.end事件之前,所以我爲req的結束事件註冊一個處理程序。

req.on('end',function(){ 
    if(!flag){ 
     res.json({ 
      ....   
     }); 
    } 

});