在IE8中下载PDF文件

时间:2013-11-29 22:18:08

标签: pdf internet-explorer-8 download

我有一个问题,我完全不知道如何诊断和解决。我有一个包含大量PDF的网站,应该在新的标签/窗口中打开。但是,客户端在IE8中查看PDF时遇到问题 - 他们说下载在几百KB后停止。 PDF不是很大,不到10MB。

相关网页是:http://familyfoods.ca/flyer-download/。单击任何商店链接以下载PDF。客户报告的PDF是fffAA-1.pdf(可从巴萨诺家庭食品公司访问,阿尔伯塔省的第一个链接)。

任何帮助都非常感谢!

1 个答案:

答案 0 :(得分:0)

这个问题在stackoverflow上被多次询问和回答,但是你的问题让我有机会在16小时的故障排除,猜测和谷歌搜索之后发布我的注意,直到我的手指受伤。< / p>

问题是IE8拒绝下载PDF文件或在浏览器中打开它们。有问题的网站是安全的(SSL加密),并且使用PHP将文件从Web根目录外的位置流式传输出去。

基本上,您所看到的所有现有示例都指出了您应该发送到浏览器的各种标题,并且有关于哪些标题最佳以及哪些标题有效且无效的参数。有一些微软文章的链接描述了影响你在Internet Explorer 5-8等等中缓存的bug,你可以看到,但我从未见过的是以下内容;

//Full working example code
session_cache_limiter('');
header('Content-Type: application/pdf');
header('Date: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: private,post-check=0,pre-check=0,max-age=1');
header('Pragma: public');
header('Expires: 0');
header('Content-Disposition: attachment; filename="'.basename($filename).'"; modification-date="'.$modified.'"; size='.filesize($filename).';');
header('Content-Length: '.filesize($filename));
header('Content-Transfer-Encoding: binary');
readfile($filename);

魔术答案:session_cache_limiter

不明显的是session_cache_limiter(&#39;&#39;);当你还使用会话时需要它,因为它会发送它自己的缓存标题,如果你不知道这个,或者至少要注意它,那么它会被你和IE8(Internet Explorer 8.0)将拒绝使用上述标题下载流式PDF文件。通过发出带有零长度字符串参数的函数来禁用会话系统发送的这些缓存头,它允许你最终控制进入IE的头文件,从而避免这种情况。#34;陷阱&#34;。