加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

下载 – ie9挂起时流文件到浏览器

发布时间:2020-12-15 00:24:13 所属栏目:Java 来源:网络整理
导读:我使用以下方式将文件(通常为Excel或PDF)流式传输到浏览器.它通过将隐藏的iFrame的位置设置为包含代码的下载处理程序来进行操作. 在Firefox等工作正常,在IE9的某些实例中,但不是IE9的其他实例. 不起作用的信息栏出现,但没有选项可以打开,只保存或取消. 信息
我使用以下方式将文件(通常为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阅读器.任何这些事情都可能是一个因素.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读