5丁目通信(仮称)

とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。

ASP.NET でZIPファイルを作成した話し


APS.net

ASP.NETでZIPで圧縮して、ダウンロードさせるプログラムを作成。その覚え書き。

ASP.NETでZIPファイルを作成することは、いくつか方法があるが、今回は、ZIP32j.DLLを呼び出して実現することにする。J#のランタイムライブラリをインストールさせたくないし、ライセンスが難しいライブラリをつかいたくないということで。

参考にしたサイトは、ここ。ラッパークラスを頂戴する。感謝。

しかし、ZIPファイルを作成しようとすると、ZipGetRunning()で必ずZIP32j.DLLが動いていると判定してしまう。原因不明。

こちらを回避して、ZIPファイルに圧縮することを確認できた。

“ASP.NET でZIPファイルを作成した話し” への10件のフィードバック

  1. Naoのアバター
    Nao

    突然すみません。

    上記記事について質問です。
    仕事で同様の処理を作成中なのですが、同じ現象で圧縮処理に失敗します。

    ずうずうしいお願いですが、
    上記記事の回避方法を教えて頂きたいです。

    急なお願いで誠に申し訳ないのですが、よろしくお願い致します。

  2. andoのアバター
    ando

    単純にZipGetRunning()の処理をコメントにしてしまっています。あまりお勧めしない対応です。

    .NET Framework 2.0以降でしたら、ZIPの圧縮は標準で用意されているようですね。

    public static bool archive(string zipname, string fileFilter)
    {
    // if(Zip32.ZipGetRunning())
    // {
    // return false;
    // }
    // else
    // {
    string cmdline = string.Format(“-rj {0} {1}”,
    Zip32._checkFileName(zipname), Zip32._checkFileName(fileFilter));
    int ret = Zip32.Zip(0, cmdline, null, 0);
    return (ret == 0);
    // }
    }

  3. Naoのアバター
    Nao

    突然の質問にもかかわらず早速の回答ありがとうございます。

    >.NET Framework 2.0以降でしたら、ZIPの圧縮は標準で用
    >意されているようですね。

    → 知りませんでした。こちらのパターンでの処理も調べてみ  る必要がありそうですね。勉強になります。

    途方にくれるところでしたので、非常に助かりました。
    ありがとうございました。

  4. andoのアバター
    ando

    Naoさん

    いえいえ。何かありましたら、また書き込んでください。

  5. Naoのアバター
    Nao

    ご丁寧にありがとうございます。

    その時はまた宜しくお願い致します。
    本当にありがとうございました。

  6. Naoのアバター
    Nao

    夜分遅くにすみません。

    先日は、ファイルの圧縮(Zip形式)方法を教えて頂いてありがとうございました。
    実はあれから突然仕様変更が行われた為、
    フォルダの圧縮(Zip形式)を行う必要が出てきてしまいました。

    つきましては、ご存知であればで構わないのですが、フォルダの圧縮方法を教えて頂きたいです。
    おそらくソース上のコマンドのオプション等を変更すればいいのだろうといろいろ調べてみたのですが、
    いまいち実現方法が分かっておりません。

    何度も申し訳ないのですが、ご教授のほどよろしくお願い致します。

  7. andoのアバター
    ando

    ZIP32j.DLLへはコマンドラインでパラメータを渡していますので、ZIP32j.DLLに含まれているコマンドラインのドキュメント(\SDK\CMD_ZIP.TXT)に書かれているように、-r (再帰的検索)のオプションだけを入れればよろしいかと思います。-j (ファイル名のパスを保存しない)が入っていますので、こちらを外して試してみてください。

    もしこれでダメであれば、圧縮の対象となるファイルを

      フォルダ名\*

    のようにワイルドカードで指定してみてください。

    申し訳ないのですが、実際やったことがないので、うまくいけば幸いです。

  8. Naoのアバター
    Nao

    すみません。回答ありがとうございます。


    >ZIP32j.DLLに含まれているコマンドラインのドキュメント(\SDK\CMD_ZIP.TXT)
    >に書かれているように、-r (再帰的検索)のオプションだけを入れればよろしいかと思います。

      → 見落としていました。そんなところにマニュアルがあったんですね…。

    早速、上記の内容を明日の作業で試してみようと思います。
    ありがとうございます。

  9. Naoのアバター
    Nao

    おはようございます。

    先日、教えて頂いたフォルダの圧縮についてですが、
    教えて頂いた方法で、無事圧縮する事が出来ました。

    ホントに助かりました。
    ありがとうございました。

  10. andoのアバター
    ando

    お手伝いできて、よかったです。

    実は、ASP.NETというのは範疇外(PHP辺りが得意です)でして、こちらの記事は、自分への忘れないためのメモでした。

    そういえば、DOSのころ(古くてすいません)、圧縮・解凍は、コマンドでパラメーターを指定しましたっけ。