我使用以下方式将文件(通常为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.)不引用文件名.在使用过程中遇到问题:
Content-Disposition:attachment; filename = File Name.pdf
与
Content-Disposition:attachment; filename =“File Name.pdf”
注意文件名的双引号.当名称包含空格或其他不安全字符时,这一点很重要.
2.)内容类型错误.如上述注释所述,这是系统应该如何处理文件的重要线索.对于PDF,你真的应该使用application / pdf
3.)不同的传输编码.这个问题只能影响gzipped(deflate)内容. IE不能第一次正确处理压缩流.
4.)如果您在同一浏览器的副本之间看到不同的结果,您应该尝试确定它们是否具有相同的次要版本以及os,plugins,toolbars和PDF阅读器.任何这些事情都可能是一个因素.