3

私はzipファイルをアップロードしようとしていますが、サーバー側でそれを抽出する必要があり、そのzipファイルの抽出中にエラーを処理する必要があります。抽出するには、このようにしようとしています

var zip = new AdmZip(x);

zip.extractAllTo('target path');

extractAllTo にはコールバック関数が含まれていません。含まれている場合はエラーを簡単に処理できるので、zip ファイルの抽出中にエラーを処理する方法を教えてください。

私は1つの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');

            } 

       });
     }
});

私は常にコンソールでエラーを受け取ります。

4

2 に答える 2

3

adm-zip のコードを調べた後、唯一の方法は、try {} catch ステートメントに抽出を埋め込むことです。

var zip = new AdmZip(x);

try { 
    zip.extractAllTo('target path');
} catch ( e ) { 
    console.log( 'Caught exception: ', e );
}
于 2013-05-14T06:45:18.920 に答える
0

ライブラリが同期しているように見えるため、コールバックを使用していません。zip ファイルをサーバーにアップロードする場合、同期呼び出しはすべてのクライアントのサーバー全体を停止させるため、この作業を行うには非同期ライブラリに切り替える必要があります。同期バージョンの参考までに、エラーを処理するには、try/catchスローされた例外が単一の実行スタックにあるため、構造体を使用します。

于 2013-05-14T06:46:37.670 に答える