0

Ionic zip で作業しています。作成した zip ファイルをダウンロードして、自動的に展開したいと考えています。抽出機能を実装しました。ウェブページにボタンがあり、クリックするとzipファイルが抽出され、コードで提供したパスにダウンロードされます。以下は私のコードです

String TargetDirectory = @"C:\";
            using (ZipFile zip = ZipFile.Read(Server.MapPath(ConfigurationManager.AppSettings["zipfiles"] + filename)))
            {
                zip.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
                zip.Password = password;
                zip.ExtractAll(TargetDirectory);
            }

このコードは正常に動作しています。ボタンをクリックするとダウンロード ダイアログが表示され、ユーザーがダイアログから選択したパスにファイルが抽出されます。どうすればこれを達成できますか?

4

1 に答える 1

0

私たちもこの特定の問題に直面しました。私たちの問題は、圧縮するファイルの数があり、圧縮後のサイズが約2GBになることでした。

どのように整理したか。1. ダウンロードへのリンクがあります 2. ユーザーがそれをクリックします 3. プログレス ホイールを含むポップアップを表示します 4. Zip を別のスレッドでバックグラウンドで処理します。(Zip は、このユーザー専用に作成する必要があります) 5. すべて問題がなければ、ユーザーにダウンロード リンクを表示します。 6. ユーザーは、好きな場所にダウンロードします。

これがあなたに役立つかどうかはわかりませんが、私たちにとってはうまくいきます.

いくつかのコードを追加するために編集: JQuery を使用してこれを達成しました

// Action for download zip link
            $(".downloadZip").click(function () {
                var jqXhr;
                $("a.downloadZipAction").attr("href", "/GetFile?fileName=yourfile.Zip");
                $(".ZipDownLoadBox").show();
                $(".downloadingZip").show();
                $(".DownloadZipLink").addClass("hide");
                var dialogBox = $("#dialogZip").dialog({
                    modal: true,
                    width: '400px',
                    zIndex: 99999,
                    close: function (event, ui) {
                        jqXhr.abort();
                    },
                    open: function () {
                        jqXhr = $.post('@Url.Action("DownloadZip")', { uuid: $("#fileName").val() }, function (data) {
                            $(".ui-icon-gripsmall-diagonal-se").remove();
                            $(".downloadingZip").hide();
                            $(".DownloadZipLink").removeClass("hide");
                            $(".downloadZipAction").click(function () {
                                $(dialogBox).dialog("close");
                            });
                        });
                    }
                });
            });
于 2013-07-26T06:08:56.737 に答える