我使用BusBoy插件來處理文件上傳。它爲文件上傳完成後發生的 事件'文件'註冊處理程序,然後處理程序將執行下一個操作。但是當上傳文件未定義時,事件處理程序已註冊,但事件「文件」從不發生。過程停止處理此請求需要花費時間。當我繼續做這樣的事情超過五次時,節點進程會停止幾分鐘,幾分鐘後就會恢復正常。如何在NodeJS中處理未定義的上傳
那麼我該如何處理NodeJS過程中的這種情況? 不要告訴我永遠不要上傳undefined,當文件上傳失敗時,我認爲這種情況也會發生。
我使用BusBoy插件來處理文件上傳。它爲文件上傳完成後發生的 事件'文件'註冊處理程序,然後處理程序將執行下一個操作。但是當上傳文件未定義時,事件處理程序已註冊,但事件「文件」從不發生。過程停止處理此請求需要花費時間。當我繼續做這樣的事情超過五次時,節點進程會停止幾分鐘,幾分鐘後就會恢復正常。如何在NodeJS中處理未定義的上傳
那麼我該如何處理NodeJS過程中的這種情況? 不要告訴我永遠不要上傳undefined,當文件上傳失敗時,我認爲這種情況也會發生。
你可以使用「完成」事件停止處理
busboy.on('finish', function() {
//your code to stop processing
});
這「完成」事件時,在上傳的所有文件/場活動(形式)的數據已經觸發將觸發。 (如果文件/字段未定義,則忽略觸發器)。
進一步建議通過busboy
req.pipe(busboy);
你的情況來重新檢查,以pipe
您的節點request
我已經通過這個解決了這個問題。 爲'file'事件設置一個變量標誌,當事件發生時,該標誌將在其處理程序中設置爲true。因爲'file'事件發生在req.end事件之前,所以我爲req的結束事件註冊一個處理程序。
req.on('end',function(){
if(!flag){
res.json({
....
});
}
});
雖然設置完成事件的處理程序並沒有幫助,但你激勵我,無論如何謝謝你。我的解決方案 – suemi 2014-12-04 05:04:54