PHP PDF代码不起作用

时间:2015-04-10 22:42:47

标签: php pdf localhost

我有一个部分,您可以下载与工作相关的PDF。该代码在我的localhost中工作,但不在实际站点上。关于发生了什么的任何想法?

<div id="resources">
<h1>Pilot Car Resources</h1>
<table style="width:400px" id="resourcesTable">
  <tr>
   <td>Kansas Handbook</td>
   <td><a href="?file=kansasHandbook.pdf">Download PDF File</a></td>
  </tr>
  <tr>
   <td>GA Amber Light Application</td>
   <td><a href="?file=georgiaAmberLightApplication.pdf">Download PDF File</a></td>
  </tr>
</table>
</div>

和PHP

<?php
if (isset($_GET["file"]) && !empty($_GET["file"])) {
    $file    = $_GET["file"];
    $path    = "/resources/";
    $getFile = $path . $file;
    if (file_exists($getFile)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header("Content-Type: application/force-download");
        header('Content-Disposition: attachment; filename=' . urlencode(basename($getFile)));
        // 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($getFile));
        ob_clean();
        flush();
        readfile($getFile);
        exit;
    }
}
?>

1 个答案:

答案 0 :(得分:0)

问题1

你从

开始

http://jollyrogerpcs.com/index.php

您网页上的超链接是href =“file /?kansasHandbook.pdf”

所以你要对

发送文件请求

http://jollyrogerpcs.com/index.php?file=kansasHandbook.pdf

$ _ GET ['file']被忽略,来自http://jollyrogerpcs.com/index.php的html被传递给浏览器。这就是您单击下载pdf链接时页面刷新的原因。

更改链接到引用downloadPDF.php和文件get var。

的绝对链接

E.G

http://jollyrogerpcs.com/scripts/php/downloadPDF.php?file=/kansasHandbook.pdf

问题2

如果没有看到更多代码,很难分辨,但是你似乎在downloadPDF.php中遇到了另一个与路径相关的问题。当你对该网址发出GET请求时,你的$ getFile将是'/resources/kansasHandbook.pdf'。我相信readfile()会尝试在http://jollyrogerpcs.com/scripts/php/resources/kansasHandbook.pdf中搜索PDF。

您可以通过使用绝对路径或__DIR__魔力常量的组合来解决此问题。