Adobe Reader无法在IE6中打开下载的文件

时间:2010-05-13 09:01:40

标签: internet-explorer internet-explorer-6 adobe-reader

我正在开发一个允许用户下载动态生成的PDF文件的网络应用。

这在IE8和Firefox中运行良好但在IE6中使用Adobe Reader失败,显示“打开此文档时出错。无法找到此文件”

如果我先将文件保存到磁盘,那么它在Reader中就可以正常打开了。

我给文件一个简单的短文件名,没有空格,所以不知道还有什么可以尝试。任何建议都非常受欢迎。

更多信息:PDF是使用abcpdf插件在asp.net代码中生成的

5 个答案:

答案 0 :(得分:1)

您的网页是否真的需要IE6支持?一个有效的解决方案是简单地要求用户升级到更高版本的IE吗?

IE6在两个半月前去世了。 (IE6 Funeral

答案 1 :(得分:1)

您是否尝试过Response.ClearHeaders();

答案 2 :(得分:0)

可能是因为Adobe Reader Activex for IE中的超时设置。您使用部分完成的文档响应浏览器,然后您的程序花了一些时间继续响应文档的其余部分并且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";

答案 3 :(得分:0)

恕我直言,这是一个标题解释问题。我不是很熟悉或不喜欢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-Length:content-disposition:附件一起设置可能无法在Safari和IE中使用。

希望它有所帮助...

答案 4 :(得分:0)

我认为我在IE6中观察到了这种最烦人的行为(bug),如果我记得,错误的原因是文件没有存储在缓存中,而是立即过期/删除。请检查以下内容:

  1. 您是通过HTTPS返回文件吗?
  2. 检查回复标题,有关过期的内容吗?
  3. 您是否对静态提供的文件存在同样的问题(但在几乎相同的网址中,请尝试将'... / file.pdf'和'... / file.asp'与浏览器重定向到/ file。 PDF)