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 或更大的大文件,并且您希望分部分进行。一些选项:

  • 将其保存为常规文件,然后分段传输。客户端必须为 N 个部分中的每一个发出不同的下载请求,通过HTTP Range 标头选择文件的适当部分。必须将服务器设置为具有适当 MIME 类型等的服务器 ZIP 文件。

  • 将其保存到拆分(跨区)zip 文件,这意味着 N 个不同的文件。然后,客户端将为每个不同的文件创建一个 HTTP GET。服务器必须设置为服务器 .zip、.z00、.z01 等。我不确定内置 OS 工具是否正确处理拆分 zip 文件。

  • 将文件保存为一个大 blob,并让客户端使用BITS或其他一些可重新启动的下载工具。

于 2011-06-10T02:16:06.737 回答