我正在研究一个允许用户下载动态生成的PDF文件的网络应用程序。Adobe Reader无法在IE6中打开下载的文件
这工作正常,在IE8和Firefox,但未能在IE6使用Adobe Reader给消息“有一个错误打开此文件。该文件无法找到”
如果我将文件保存到硬盘的第一个那么它在Reader中打开罚款。
我已经给文件一个简单的短文件名,没有空格,所以不知道还有什么要尝试。任何建议都非常受欢迎。
更多信息:PDF使用abcpdf插件
我正在研究一个允许用户下载动态生成的PDF文件的网络应用程序。Adobe Reader无法在IE6中打开下载的文件
这工作正常,在IE8和Firefox,但未能在IE6使用Adobe Reader给消息“有一个错误打开此文件。该文件无法找到”
如果我将文件保存到硬盘的第一个那么它在Reader中打开罚款。
我已经给文件一个简单的短文件名,没有空格,所以不知道还有什么要尝试。任何建议都非常受欢迎。
更多信息:PDF使用abcpdf插件
也许是因为在Adobe Reader中的ActiveX IE超时设置在asp.net代码生成。您使用部分完成的文档回复浏览器,然后程序花费一些时间继续响应文档的其余部分,并且Adobe Reader超时。尝试生成整个PDF文档,然后回应http请求。例如在PHP中。
$s = "";
for(int i=0;i<10;i++)
$s .= "1";
echo #s;
代替
for(int i=0;i<10;i++)
echo "1";
是否真的有必要对您的网页IE6的支持?一个有效的解决方案是否只需要用户升级到更高版本的IE?
IE6在两个半月前死亡。 (IE6 Funeral)
或者,如果您确实想继续支持IE6,只需向IE6用户提供有关如何右键单击链接以将文件保存在HD上的说明。 – nico 2010-05-19 17:49:35
不幸的是,在这里所有的开发者都感到懊恼,因此有一个支持IE6的业务需求。只是提供解决方法的解释是我的回退解决方案,但想知道为什么这个问题首先发生 – chillysapien 2010-05-20 09:20:26
恕我直言,这是一个头解释问题。我不是很熟悉或喜欢的ASP.NET但至少在PHP,你需要有这些:
ob_start(); (* should be equivalent to HttpContext.Current.Response.Buffer = true *)
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=somefile.pdf');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
//header('Content-Length: ' . filesize($file));
ob_flush(); (* should be equivalent to HttpContext.Current.Response.Flush() *)
** output the pdf contents here
(* header() should be similar to HttpContext.Current.Response.AddHeader() function *)
注意与content-disposition:
附件设置Content-Length:
在一起可能会失败,在Safari和IE浏览器的工作。
希望它可以帮助...
我想我已经在IE6中观察到这种最令人讨厌的行为(错误),如果我记得,该错误的原因是,该文件并没有存储在缓存中,但已过期/立即删除。请检查以下内容:
PDF文档在发送响应之前完全生成我相信 – chillysapien 2010-05-13 09:44:33
检查MIME类型以查看您是否将正确的MIME类型作为PDF响应给浏览器? – VOX 2010-05-13 10:30:47
MIME类型设置为application/pdf。 – chillysapien 2010-05-13 12:57:29