【问题标题】:File download does not work with IE7文件下载不适用于 IE7
【发布时间】:2008-10-16 15:18:16
【问题描述】:

我有一个将文件内容发送到客户端的 asp.net 页面,因此浏览器会显示另存为对话框以下载文件。此页面显示在弹出窗口中,当用户单击保存按钮时,它会自动关闭并开始下载。

在 Windows Server 2003 上,它工作正常。在 vista 上使用其他浏览器,也可以正常工作。但是当我尝试使用 IE7 和 Vista 时,弹出窗口会打开,并在大约一秒钟后关闭,而不显示文件下载对话框。我该如何解决这个问题?

我用于响应生成的代码是:

FileStream fileStream = new FileStream(filePath, FileMode.Open);
int fileSize = (int)fileStream.Length;

byte[] buffer = new byte[fileSize];
fileStream.Read(buffer, 0, (int)fileSize);
fileStream.Close();

Response.Clear();

Response.Buffer = true;
Response.BufferOutput = true;
Response.ContentType = "application / octet - stream";

Response.AddHeader("Content-Length", buffer.Length.ToString());
Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
Response.AddHeader("Extension", Path.GetExtension(filename));
Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254"); 
Response.BinaryWrite(buffer);
Response.Flush();
Response.End();

我正在用这个 javascript 打开弹出窗口:

window.open ('Download.aspx?filename=somefile.ext','downloadWindow','location=0,status=0,scrollbars=0,width=1,height=1');

编辑:我更正了空格,但不幸的是它们不是问题。

编辑 2::似乎这个问题与 Vista 无关,而仅与 IE 有关。我还发现,当项目在本地开发服务器上运行时它工作正常,但是当连接到发布服务器时,它无法下载文件。

【问题讨论】:

  • 如果它在另一台机器上的 IE 上运行,则不是 IE 问题。
  • 嗨@Serhat -> 你是怎么解决的?我现在遇到了同样的问题。谢谢。

标签: asp.net internet-explorer-7 download


【解决方案1】:

尝试删除ContentType 中的空格。标准是application/octet-stream

【讨论】:

    【解决方案2】:

    两件事。

    1. 如前所述,您需要删除类型中的空格
    2. 是否有任何特殊原因导致您不使用 Response.TransmitFile() 而不是自己读取文件?

    【讨论】:

      【解决方案3】:

      我还建议您在文件名周围添加引号,否则,如果它包含空格,它将在 Firefox 中被截断。

      【讨论】:

        【解决方案4】:

        我无法指出您的代码中的特定问题(可能除了该内容类型,它看起来格式不正确;不确定这是否会产生影响)。这是我为此使用的代码,它适用于 IE7 和 Firefox:

        Response.ContentType = "application/x-download";
        Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
        Response.CacheControl = "public";
        Response.OutputStream.Write(byteArr, 0, byteArr.Length);
        Response.End();
        

        【讨论】:

          【解决方案5】:

          我认为您的问题可能出在 IIS 7 上。集成管道模式的新互联网信息服务器中的“addHeader”有问题。

          尝试使用 Response.AppendHeader 。

          【讨论】:

            【解决方案6】:

            我也遇到了同样的问题......我使用了这个解决方案(我在 button.click 上使用它):

            Response.ContentType = "text/txt";
            Response.AppendHeader("Content-Disposition", "attachment; filename="+DownloadFileName);
            Response.Write(MyFileContent_Text_);
            Response.End();
            

            ...刚刚成功了!!

            【讨论】:

              【解决方案7】:

              我看到这篇文章是因为我遇到了类似的问题,如果不是同一个问题。我在 Windows 7 上运行 IE8。

              在我的本地机器上调试时,我可以显示文件下载提示,但是当单击“保存”或“打开”时,下载进度窗口会显示大约半秒,然后突然关闭而没有下载任何内容。

              我为 Internet Explorer 安装了一个名为 IE7Pro 的插件。它带有一个我启用的下载管理器。当我禁用它时,我的问题就消失了,我可以打开或保存我的文件。

              希望这对其他人有帮助。

              【讨论】:

                猜你喜欢
                • 2012-06-20
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-04-19
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多