下载文件时IE8 OpenWindow不起作用

时间:2011-03-31 15:52:20

标签: c# asp.net internet-explorer

我有一个简单的脚本,可以使用javascript打开一个新窗口:

<script type="text/javascript">
        window.open("/test/test.aspx", "", "", "");
</script>

这在处理普通网页时效果很好,但是当我尝试使用以下代码下载pdf文件时

context.Response.ContentType = "application/pdf";
context.Response.WriteFile(fileFullName); 

我可以看到窗口打开但之后会立即关闭。仅当在本地工作时,才会在访问其他服务器时显示此行为。

当使用IE8的不同浏览器时,没有问题,下载效果很好。

我暂时找到一个打开带有链接的页面的工作,以便用户点击并访问他的下载,但我不太喜欢这个解决方案。

感谢您的投入,

[编辑] 这是一个简化的代码:

第1页:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <script type="text/javascript">
        window.open("/page2.aspx", "", "", "");

    </script>

    </div>
    </form>
</body>
</html>

第2页

protected void Page_Load(object sender, EventArgs e)
        {
            string fileFullName = ApplicationStoringPath.TempReportPath + "00329bad-28ac-46bd-9f0a-3eced660f079.pdf";
            string fileName = "test.pdf" ;

            if (File.Exists(fileFullName))
            {
                FileStream file = File.Open(fileFullName, FileMode.Open);
                long length = file.Length;
                file.Dispose();


                Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", fileName));
                Response.AddHeader("Pragma", "public");
                Response.AddHeader("Expires", "0");
                Response.AddHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
                Response.AddHeader("Content-Transfer-Encoding", "binary");
                Response.AddHeader("Content-Length", length.ToString());
                Response.ContentType = "application/pdf";

                Response.WriteFile(fileFullName);
            }
        }

发生了什么:

从本地访问第1页打开弹出窗口并建议下载。 (IE) 从本地访问第2页建议下载。(IE)

从不同的PC访问第1页会打开弹出窗口,不建议下载。 (IE) 从不同的PC访问第2页建议下载。 (IE)

从不同的PC访问第1页打开弹出窗口并建议下载。 (火狐) 从不同的PC访问第2页建议下载。 (Firefox)的

这不是一些弹出窗口阻塞的情况。我尝试访问的文件位于托管我的页面的站点的临时文件夹中,即同一服务器。

[编辑]

3 个答案:

答案 0 :(得分:2)

在我的情况下文件正在下载但是没有显示打开 - 保存弹出窗口。我刚刚启用了“自动提示文件下载”并且工作正常:)

打开Internet Explorer&gt;工具&gt;互联网选项&gt;安全&gt;自定义级别&gt;下载 : 为“自动提示文件下载”选择“启用”。

答案 1 :(得分:0)

你是否在IE8上有一个尚未配置的弹出窗口拦截器?

答案 2 :(得分:0)

非常感谢您的帮助。

无论我尝试使用弹出窗口都没有成功,因此我尝试使用iframe进行下载。幸运的是,它就像一个魅力。

然后我现在使用相同的代码:

<iframe id="DownloadIFrame" visible=false height=1 width=1></iframe>
<script type="text/javascript">


    document.getElementById('DownloadIFrame').src = "/page2.aspx";

</script>