2013-05-14 56 views
3

我想上傳zip文件,然後我必須在服務器端解壓縮它,同時我還必須在解壓縮zip文件時處理錯誤。嘗試這樣如何處理錯誤,同時提取node.js中的zip文件

var zip = new AdmZip(x); 

zip.extractAllTo('target path'); 

的extractAllTo不含回撥功能,如果含有這些我都可以處理犯錯容易,所以讓我知道如何處理犯錯而提取zip文件。

我正在創建一個tmp文件夾,並上傳文件後,然後我將該上傳的文件保存到tmp文件夾,然後我將該上傳的文件存儲到原始文件夾,我將採取該路徑存儲數據庫(mongodb)。數據我得到了存儲結果回調函數內回調函數我試圖刪除該tmp文件夾,但我無法刪除它。我已經厭倦了刪除沒有數據存儲回調函數它正在工作。我做了什麼錯誤,如何解決它。我有這樣的嘗試

db.save({'filepath':'xxxxx'},function(err,data) 
{ 

    if(data) 
    { 
     fs.rmdir('xxxx/xxxxx',function(err) 
     { 
      if(err) 
      { 
       console.log('err') 

      }else 
      { 
       console.log('removed'); 

      } 

     }); 
    } 
}); 

我總是在控制檯收到錯誤。

回答

2

尋找從ADM-ZIP代碼後,唯一的辦法就是嵌入提取在try {} catch語句:

var zip = new AdmZip(x); 

try { 
    zip.extractAllTo('target path'); 
} catch (e) { 
    console.log('Caught exception: ', e); 
} 
+0

如果錯誤不存在,我應該從哪裏開始下一個功能。我可以嘗試像這樣嘗試黑色嘗試{zip.extractAllTo('target path'); db.find({'username':xxxx},function(err,result){console.log(result)});}} – silvesterprabu 2013-05-14 07:01:04

1

它看起來像你的庫是同步的,這就是爲什麼它不」不要使用回調。如果您正在上傳zip文件到服務器,同步調用將暫停所有客戶端的整個服務器,因此您應該切換到異步庫來執行此項工作。 FYI爲同步版本,爲了處理錯誤,您將使用try/catch結構,因爲拋出的異常在單個執行堆棧中。