强制IE在新窗中打开下载

本文关键字:下载 新窗中 IE 强制 | 更新日期: 2023-09-27 18:14:10

我有一个web应用程序,列出存储在它里面的文件。

每个项目都有一个超链接,当单击该超链接时,将强制出现打开/保存对话框。

现在,如果我点击一个指向Word文档的链接并选择"打开",它会在自己的窗口中打开,正如你所期望的那样。但是,如果文件是HTML文件,我选择"打开"选项,它会在浏览器中打开一个页面[正确],但它会在我过去选择文档[坏]的窗口中打开。

那么,对于这个问题:是否有可能强制打开/保存对话框的"打开"选项在新窗口中打开文档?

编辑:

强制打开文档的超链接不仅仅是指向文件的指针(出于多种原因)。.NavigateUrl属性包含对JavaScript函数的调用,该函数向应用程序发出Ajax请求,该请求从安全存储中获取文档,并将其作为附件呈现给用户的浏览器(Content-Disposition: attachment)

进一步编辑:JavaScript函数只是对页面进行Ajax回调。这个动作的结果是导致页面显示在IFrame中。该页直接写入响应对象,如下所示:

Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", String.Format("attachment;filename='"{0}'"", FileName));
Response.AddHeader("Content-Length", String.Format("{0}", length));
Response.Flush();
Response.Close();

我想,如果可以改变'打开'按钮的动作在结果打开/保存对话框中,这将是我在这个代码中做的事情,将强制它。

如果有区别的话,这是一个用c#编写的。net v4.0应用程序。

我知道打开新窗口的好处和坏处,但这是一个私人应用程序,这是客户想要的。

强制IE在新窗中打开下载

与其让每个链接都指向基页中的JS函数,不如试试这样做…

让每个链接指向一个URL(例如/GetFileContent.aspx?fileid=123),并让该页面在加载文件之前执行必要的逻辑。保持你的ContextType和响应头代码不变。

每个链接将打开一个新窗口,看起来像这样:

<a href="/GetFileContent.aspx?file=123" target="_blank">filename.doc</a>