如何在node.js中解压缩zip文件时处理错误

时间:2013-05-14 06:21:36

标签: javascript node.js mongodb fs

我正在尝试上传zip文件,然后我必须在服务器端提取它,并且我必须在提取该zip文件时处理错误。提取我正在尝试这样

var zip = new AdmZip(x);

zip.extractAllTo('target path');

extractAllTo不包含回调函数,如果它包含我可以轻松处理错误,那么让我知道如何在解压缩zip文件时处理错误。

我正在创建一个tmp文件夹并在上传文件后然后我将上传的文件保存到tmp文件夹然后我将上传的文件存储到原始文件夹中,我将采用该路径存储db(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 个答案:

答案 0 :(得分:3)

在查看adm-zip的代码后,唯一的方法是在try {} catch语句中嵌入提取:

var zip = new AdmZip(x);

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

答案 1 :(得分:1)

看起来您的库是同步的,这就是它不使用回调的原因。如果要将zip文件上载到服务器,则同步调用将为所有客户端暂停整个服务器,因此您应切换到异步库以执行此操作。对于同步版本的FYI,为了处理错误,您将使用try/catch结构,因为抛出的异常位于单个执行堆栈中。