使用DotNetZip Library拆分zip文件

时间:2011-06-09 05:43:45

标签: asp.net split dotnetzip

我正在使用DotNetZip Library创建一个大约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的部分,并为用户提供下载工具。我可以实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

您的问题与ZIP方面无关。基本上,您似乎想要下载100mb或更大的大文件,并且您想要部分地完成它。一些选择:

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

  • 将其保存到split (spanned) zip file,这意味着N个不同的文件。然后,客户端将为每个不同的文件进行HTTP GET。服务器必须设置为服务器.zip,.z00,.z01等。我不确定内置的OS工具是否适当地处理拆分的zip文件。

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