我正在使用经典的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)。
答案 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)
您是clear
和end
吗?
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();