2

DotNetZip ライブラリを使用して、約 100MB の zip ファイルを作成しています。zip ファイルを Response.OutputStream に直接保存しています。

Response.Clear();
    // no buffering - allows large zip files to download as they are zipped
    Response.BufferOutput = false;
    String ReadmeText= "Dynamic content for a readme file...\n" + 
                       DateTime.Now.ToString("G");
    string archiveName= String.Format("archive-{0}.zip", 
                                      DateTime.Now.ToString("yyyy-MMM-dd-HHmmss")); 
    Response.ContentType = "application/zip";
    Response.AddHeader("content-disposition", "attachment; filename=" + archiveName);
    using (ZipFile zip = new ZipFile())
    {
        // add a file entry into the zip, using content from a string
        zip.AddFileFromString("Readme.txt", "", ReadmeText);
        // add the set of files to the zip
        zip.AddFiles(filesToInclude, "files");
        // compress and write the output to OutputStream
        zip.Save(Response.OutputStream);
    }
    Response.Close();

この 100MB のファイルを約 20MB のセクションに分割し、ダウンロード機能をユーザーに提供する必要があります。これを達成するにはどうすればよいですか?

4

1 に答える 1

1

あなたの質問は、ZIPの側面とは無関係です。基本的には100MB以上の大きなファイルをダウンロードできるようにしたいと考えており、分割して行いたいと考えています。いくつかのオプション:

  • 通常のファイルに保存してから、分割して送信します。クライアントは、 HTTP Range ヘッダーを介してファイルの適切なセクションを選択し、N 個の部分ごとに個別のダウンロード リクエストを作成する必要があります。サーバーは、適切な MIME タイプなどのサーバー ZIP ファイルに設定する必要があります。

  • N個の異なるファイルを意味する分割(スパン)zipファイルに保存します。次に、クライアントは個別のファイルごとに HTTP GET を作成します。サーバーはサーバー .zip、.z00、.z01 などに設定する必要があります。組み込みの OS ツールが分割された zip ファイルを適切に処理するかどうかはわかりません。

  • ファイルを 1 つの大きな BLOB として保存し、クライアントにBITSまたはその他の再起動可能なダウンロード機能を使用させます。

于 2011-06-10T02:16:06.737 に答える