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

der*_*hen 10 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
Run Code Online (Sandbox Code Playgroud)

有没有人看过这个或找到了修复.没有启用加载项,也没有停止加载.我们已经将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
Run Code Online (Sandbox Code Playgroud)

Spl*_*iFF 3

我发现上面的代码存在两个潜在问题以及两个潜在的“情有可原的情况”:

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

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

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

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

3.) 不同的传输编码。此问题可能仅影响压缩(压缩)内容。这并不是 IE 第一次无法正确处理压缩流。

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

  • 太好了,但是您能告诉我们哪一步解决了您的问题 - 为了他人的利益吗? (4认同)