IE 7的bug? - 下载文件时提示保存/打开 - c#asp.net 3.5

时间:2009-08-13 15:26:37

标签: c# internet-explorer-7 asp.net-3.5 content-disposition

我有一个带链接按钮的aspx页面,可以触发javascript弹出一个新的aspx页面,将文件流式传输到浏览器供用户下载。

在XP SP3,IE 7和FireFox 3.5上进行开发和单元测试时,使用以下代码(key是Content-Disposition标记中的“附件”部分),都会提示一个对话框询问我是否要保存或打开文档,这正是我想要发生的事情:

        private void WriteFileToBrowser(Byte[] requestFile, string filename, String m_mimeType, String m_format)
    {
        Response.Clear();
        Response.AddHeader("Content-Disposition", "attachment;filename=" + filename + "." + m_format);
        Response.ContentType = m_mimeType;
        Response.BinaryWrite(requestFile);
        Response.Flush();

    }

当我将其部署到Windows 2003服务器并导航到同一个aspx页面时,FireFox 3.5会正确地请求保存/打开选项,因为这是FF中的默认操作。

当我在IE 7中导航然后单击下载时,我会看到一个弹出窗口,该窗口在1/8秒的顶部可见...并且消失。没有提示保存/打开。

如果我进入IE 7 - >工具 - >互联网选项 - >安全 - >自定义级别 - >下载

禁用自动提示文件下载。当我检查它以启用i时,然后让“保存/打开”提示正常工作。

所以我的问题是......有没有人得到一个解决这个问题的工作?我已经尝试了一些人们声称可以使用不同的标头标签(如缓存,编译指示等等)的东西...这些都没有解决IE默认情况下禁用下载属性的事实。

5 个答案:

答案 0 :(得分:2)

我们最近遇到了与我们的自定义Web框架中下载生成的报告的实现相同的问题。研究使我们尝试了你提到的相同方法(设置Content-Disposition)。

问题与IE7和安全区域有关。默认情况下,某些操作必须由用户明确启动。您可以先查看Understanding and Working in Protected Mode Internet ExplorerAbout Window Restrictions

答案 1 :(得分:1)

如果要将页面添加到受信任的站点,则可以下载该文件。 开发您正在运行的所有站点时,都在此区域中。

您可以尝试添加

来强制使用Internet Explorer
HttpContext.Current.ApplicationInstance.CompleteRequest();

到您的请求结束。

否则,您可以尝试将链接发布到文档,以便浏览器将请求视为用户交互的响应。

答案 2 :(得分:0)

与此问题无关,但您需要在输出中引用文件名。下载文件时,文件名中的空格会搞砸文件名。

Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "." + m_format +"\"");

答案 3 :(得分:0)

试试这个

protected void Button1_Click(object sender,EventArgs e)     {         Response.ContentType =“application / pdf”;         Response.Clear();         Response.TransmitFile( “检验.pdf”);         到Response.End();     }

答案 4 :(得分:0)

如果使用javascript打开新页面不是必需的,则可以使用Response.Redirect()到aspx页面。这应该打开保存/打开对话框。