代码之家  ›  专栏  ›  技术社区  ›  ileon

下载25MB文件时出现问题-下载8MB文件时没有问题(ASP.NET)

  •  0
  • ileon  · 技术社区  · 14 年前

    我在同一个位置有两个文件,但是大文件在即将完成下载时会出错(在IE和Firefox中)。

    我使用以下代码:

    public static void DownloadZipFile (string filename, bool notifyMe)
    {
        HttpContext context = HttpContext.Current;
        HttpServerUtility server = context.Server;
        bool ok = false;
        try
        {
            string file = string.Format ("~/contents/licensing/members/downloads/{0}", filename);
            string server_file = server.MapPath (file);
    
            HttpResponse response = context.Response;
            //response.BufferOutput = false;
            response.ContentType = "application/zip";
            string value = string.Format ("attachment; filename={0}", filename);
            response.AppendHeader ("Content-Disposition", value);
            FileInfo f = new FileInfo (server_file);
            long size = f.Length;
            response.TransmitFile (server_file, 0, size);
            response.Flush ();
            ok = true;
            response.End ();
        }
        catch (Exception ex)
        {
            Utilities.Log (ex);
        }
        finally
        {
            if (ok && notifyMe)
                NotifyDownload (filename);
        }
    }
    

    有什么想法吗?

    2 回复  |  直到 14 年前
        1
  •  0
  •   matt-dot-net    14 年前

    response.end()调用response.flush()。尝试删除刷新调用。

        2
  •  0
  •   ileon    14 年前

    此问题的解决方案是添加行:

    response.AddHeader("Content-Length",size.ToString());
    

    在调用TransmitFile()之前。 学分归吉姆·舒伯特(见上文他的评论)。