【问题标题】:IE download issue with large fileIE大文件下载问题
【发布时间】: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


【解决方案1】:

我正在发布我的答案。在尝试了所有方法之后,我从方法的末尾删除了 Response.Close() 的代码行。原因很简单,我没有将压缩文件存储到服务器上的任何其他位置,因此同时它将存储在 Response 对象中,并且当 Response.Close() 将被执行时,大尺寸文件将不会被下载。所以它会给出错误,比如下载被中断。 感谢@Yeldar 和@Oguz 的帮助。

【讨论】:

    猜你喜欢
    • 2013-05-15
    • 1970-01-01
    • 2022-01-11
    • 2012-03-14
    • 1970-01-01
    • 2014-09-27
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多