我正在使用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的部分,并为用户提供下载工具。我可以实现这一目标吗?
答案 0 :(得分:1)
您的问题与ZIP方面无关。基本上,您似乎想要下载100mb或更大的大文件,并且您想要部分地完成它。一些选择:
将其保存到常规文件中,然后分批传输。客户端必须为N个部分中的每个部分发出不同的下载请求,通过HTTP Range header选择文件的相应部分。必须将服务器设置为具有适当MIME类型等的服务器ZIP文件。
将其保存到split (spanned) zip file,这意味着N个不同的文件。然后,客户端将为每个不同的文件进行HTTP GET。服务器必须设置为服务器.zip,.z00,.z01等。我不确定内置的OS工具是否适当地处理拆分的zip文件。
将文件保存为一个大blob,并让客户端使用BITS或其他一些可重新启动的下载工具。