download - 将文件流式传输到浏览器时 ie9 挂起

标签 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

有没有人见过这个或找到解决办法。没有启用附加组件,也没有AV阻止它。我们比较了机器上 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.) 不引用文件名。我在使用时遇到了问题:

内容处置:附件;filename=文件名.pdf内容处置:附件;filename="文件名.pdf"

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

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

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

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

关于download - 将文件流式传输到浏览器时 ie9 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5886574/

相关文章:

java - 下载/导出文件时 Google Drive API 获取空 ByteArray

Android:加载数据然后通知 Activity ?还记录了一个失败的方法!

javascript - localStorage 在 IE9 和 Firefox 中不工作

html - 如何让这个页面在 IE 9 中居中

css - IE9 CSS 文本对齐不起作用

c++ - URLOpenPullStream 和 gzip 内容下载 - 需要未压缩的数据

csv - 如何使用Response对象在Symfony 2中强制下载.csv文件?

html - CSS 下拉菜单仅显示 ul 而不是 ie9 中的元素

internet-explorer - 为什么使用HTML1113:文档模式从IE9标准重新启动为怪癖

iphone - 将 iPhone 应用程序链接到 Mysql 数据库我可以知道下载大小吗?