我使用以下命令将文件(通常是 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/