在IE中下载问题

时间:2009-12-04 12:21:39

标签: asp-classic download cross-browser

我正在使用经典的asp和vb脚本。 下载excel文件的代码是:

Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "Content-Disposition", "attachment;filename=ExportedData.xls"
Response.Write "<table><tr><td>1</td></tr></table>"

然后它可以与firefox或任何其他下载器(如轨道下载器)一起正常工作。 但我在IE 6.0 / 7.0 / 8.0中遇到错误。

消息是:

  

Internet Explorer无法下载   来自secure.siteurl.com的myasppage.asp。

     

Internet Explorer无法打开   这个互联网网站。请求的网站   要么不可用,要么不能   找到。请稍后再试。

那会是什么问题?

供参考: 我将查询字符串参数ysnDownload = 1传递给myasppage.asp页面。 &安培;如果它被传递然后只有它将ContentType作为应用程序,那么它将具有默认类型(text / html)。

4 个答案:

答案 0 :(得分:2)

我认为线索可能出现在“secure.siteurl.com”中。我猜你是通过https发送的吗?

在这种情况下,您可能会在IE处理此类型下载的方式中违反“错误”。它将这些文档下载到缓存,然后从那里传输或打开它们。但是,当通过https下载内容并且未指定缓存或明确声明不应从缓存中提供项目时,文档不会保存在缓存中。这可能会破坏下载保存或打开机制。

尝试设置Response对象的Expires和CacheControl属性,以允许非常短的缓存窗口。例如: -

Response.Expires = 1
Response.CacheControl = "private; max-age=10"

答案 1 :(得分:0)

如果你使用SSL(secure.siteurl.com使用SSL吗?)那么Internet Explorer对于临时文件有点挑剔。

在这种情况下,我通常随身携带的标题是:

Cache-Control: public, must-revalidate
Pragma: hack

答案 2 :(得分:0)

您是clearend吗?

Response.Clear
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "Content-Disposition", "attachment;filename=ExportedData.xls"
Response.Write "<table><tr><td>1</td></tr></table>"
Response.End

答案 3 :(得分:0)

http://forums.asp.net/t/1224596.aspx

这行代码应该适合您,只需在导出文件之前清除标题。 Reponse.ClearHeaders();