链接到pdf中的强制下载脚本

时间:2009-11-12 14:57:29

标签: php pdf internet-explorer-6 internet-explorer-8 internet-explorer-7

我正在使用PHP生成动态PDF报告,并且在链接到网络时出现了一些问题。

我的链接指向强制下载文件附件的PHP脚本。当通过浏览器访问时,此脚本可在所有浏览器中完美运行。它也可以在除Internet Explorer之外的所有浏览器中使用PDF。

而不是IE将文件视为PDF,PNG或任何文件,下载提示说文档类型为:“HTML插件文档”

如果用户点击“打开”或“保存”,IE表示无法下载文件并将文件名设为“index2.php”。这是地址URI的开头。

给出了正确的文件大小,所以我知道它正在获取文件。也许这是一个标题问题?

以下是我在下载脚本上创建的标题:

            header("Expires: Mon, 26 Jul 1997 05:00:00 GMT;");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT;");
    header("Pragma: no-cache;");        // HTTP/1.0
    header('Content-Type: '.$file->file_mime_type.';');
    header("Content-Description: File Transfer");
    header("Cache-Control: public");
            header('Content-Disposition: attachment; filename="'.$file->file_name.'";');
    header('Content-Length: '.$file->file_size.';');
    header('Content-transfer-encoding: binary');

非常感谢任何输入。

3 个答案:

答案 0 :(得分:5)

你试过这样的事吗?

header('Content-Disposition: attachment; filename="'.$file->filename.'"');

答案 1 :(得分:5)

这是我使用的,并且证明有效:

header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="'.$file->file_name.'"');
readfile($filename);

答案 2 :(得分:4)

值得一提的是,在通过SSL传输文件时,IE的多个版本也存在已知问题,需要进行以下解决方法:

header("Cache-Control: maxage=1");
header("Pragma: public");

此处有关于此错误的更多信息:http://support.microsoft.com/kb/812935