【发布时间】:2016-02-18 09:15:29
【问题描述】:
我在 Asp.net MVC 中构建应用程序,我有一些功能可以下载超过 50 MB 的 zip 文件。一切正常,但在 IE10,11 版本的 zip 文件下载超过 40MB 时出现错误且无法下载。它给出了错误,例如 下载被中断。 为了您的信息,我正在使用 IONIC.DLL 压缩文件。它在所有其他浏览器中运行良好。我也附上了示例代码。
Response.Clear();
Response.BufferOutput = false; // for large files
Response.ContentType = "application/zip";
Response.AddHeader("content-disposition", "filename=Documents.zip");
Response.AddHeader("Content-Length", "632620");
using (var zip = new ZipFile())
{
foreach (var file in files)
{
if (!file.Contains(":")) continue;
var filename = file.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries)[0];
var fileUrl = Server.MapPath(string.Format("~/Uploads/{0}MyLib/{1}", Test, filename));
//zipping current file
zip.AddFile(fileUrl, "Document");
}
zip.Save(Response.OutputStream);
}
【问题讨论】:
-
在此之后您是
Response.Close()还是Response.End()?这是整个方法吗? -
您可能因为 using 语句而面临这个问题。尝试在 Save 方法之后立即刷新响应流。还要检查 Save 的过载,它不会关闭输出流
-
是的@YeldarKurmangaliyev 我在 using {} 语句之后使用了 Response.Close() 。我删除了它,它也开始在 IE 中正常工作。感谢您的提示。
-
@OguzOzgul 感谢您的提示
标签: c# asp.net-mvc zip