ie9在将文件传输到浏览器时挂起

时间:2011-05-04 16:19:06

标签: download internet-explorer-9

我使用以下内容将文件(通常是Excel或PDF)流式传输到浏览器。它通过将隐藏的iFrame的位置设置为包含代码的下载处理程序来进行操作。

在Firefox等以及IE9的某些实例中工作正常,但IE9的其他实例却没有。

如果它不起作用,则会显示信息栏,但没有打开选项,只有保存或取消。

信息栏随后会挂起,无法关闭或取消。

此外,URL也会更改,以便文件前缀之前的点(例如.xls或.pdf)更改为下划线。

典型的正确答案是

/export_templates/rawdata/downloadfile7.asp?fID=@_pdf@{875CFEE5-23D4-42CB-8885-7A9D493DC616}.pdf&fname=Quick%5Fpoll.pdf

有没有人看过这个或找到了解决办法。没有启用加载项,也没有停止加载。我们已经在IE,av和防火墙上对设备进行了比较,它们的设置和功能都不相同,而且它们完全相同。

Set adoStream = CreateObject("ADODB.Stream")
adoStream.Open()
adoStream.Type = 1
adoStream.LoadFromFile(f.Path)
dataSize = f.size
Response.Buffer = true
Response.CharSet = "UTF-8"
Response.clear
Response.ContentType = "application/x-unknown" ' arbitrary
Response.AddHeader "Content-Length", dataSize
Response.AddHeader "Content-Disposition","attachment;filename=" & thisfname

Response.flush
do while not adoStream.eos
    Response.BinaryWrite adoStream.Read(1024 * 8)
    Response.flush
loop
Response.End()
adoStream.close
set adoStream=nothing

1 个答案:

答案 0 :(得分:3)

我发现上述代码存在两个潜在问题,两个潜在的“情有可原”:

1。)不引用文件名。我在使用时遇到过问题:

Content-Disposition: attachment;filename=File Name.pdfContent-Disposition: attachment;filename="File Name.pdf"

请注意文件名周围的双引号。当名称包含空格或其他不安全的字符时,这很重要。

2。)错误的内容类型。正如上面的评论中所提到的,这是系统应如何处理文件的重要提示。对于PDF,你真的应该使用application/pdf

3.)不同的转移编码。这个问题可能只影响gzip(deflate)内容。这不是IE第一次无法正确处理压缩流。

4。)如果您在同一浏览器的副本之间看到不同的结果,您应该尝试确定它们是否也具有相同的次要版本以及操作系统,插件,工具栏和PDF阅读器。任何这些都可能是一个因素。