我有一个部分,您可以下载与工作相关的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;
}
}
?>
答案 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__魔力常量的组合来解决此问题。