pdf文件下载链接在php中不起作用

时间:2012-12-04 10:37:21

标签: php pdf download

我一直在使用这个网站寻找答案,但我找不到任何可能有帮助,所以我决定创建一个帐户并问自己。

以下是我正在处理http://www.h-elpsystems.co.uk/index.php网站的链接。它是一个数据库驱动的网站,允许用户下载文件。现在我正在网站的一个页面上工作(据我所知,我没有触及任何使用下载代码的代码),现在突然下载不起作用。

下载位于底部的“雇佣法律页面”。当您单击链接下载文件时,它只会将用户发送到同一页面,但最后只能在URL中使用#。

我不确定要上传哪些代码(我是php的新手),但如果有人让我知道哪些是必需的,我会上传它。

感谢您提前提供任何帮助。

PS这是我用于下载的代码。 (注意我没有创建代码,我只编辑了一两页,因为某些原因,下载似乎停止了工作。)

<?
// Define the path to file
$file = "membersfiles/".$_GET['ID'];

if(!file)
{
 // File doesn't exist, output error
 die('file not found');
}
else
{
 // Set headers
 header("Cache-Control: public");
 header("Content-Description: File Transfer");
 header("Content-Disposition: attachment; filename=$file");
 header("Content-Type: application/zip");
 header("Content-Transfer-Encoding: binary");

 // Read the file from disk
 readfile($file);
 }
 ?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Download file</title>
 </head>

 <body>
 </body>
 </html>

以下是就业页面的代码。 (对不起,我是这个论坛的新手,所以我真的不知道该问题包含哪些内容)

<?
session_start;
include("../Functions.inc");
$ID=PageID(substr(dirname($_SERVER['PHP_SELF']), 1, strlen(dirname($_SERVER['PHP_SELF']))));

?>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title><? echo PageTitle($ID);?></title>
<meta name="keywords" content="<? echo PageKeywords($ID);?>" />
<meta name="description" content="<? echo PageDescription($ID);?>" />
<meta name="robots" content="index,follow" />


<link href="../mainstyles.css" rel="stylesheet" type="text/css" media="screen" />

</head>

<body>

<div id="wrapper">

<div id="leftcolumn"><div id="mainnav"><img src="../media/logo.gif" alt="H-elp Systems" /><? include("../Left-Links.inc"); ?>
<a href="mailto:info@h-elpsystems.com" id="emailbutton" ><span>click here to email us</span></a>
<img src="../media/navfooter.gif" alt="Help Systems" /></div>
</div>


<div id="centercolumn">
<div id="topnav">
<? include("../Top-Links.inc"); ?>
</div>

<div id="content">
<img src="../media/headers/<? echo PageTitle($ID);?>.jpg" alt="" />
<img src="../media/splashtext/<? echo PageTitle($ID);?>.gif" alt="When it come to employment you need h-elp systems" /><a href="#" id="phonelink" ><span>0121 635 5870</span></a>
<img src="../media/hr450.gif" alt="Help Systems" />
<div id="contentcopy">
<h1><? echo PageSplash($ID);?></h1>
<? echo PageContent($ID);?>

<?
    $query = "SELECT * FROM `Files` WHERE  `Employment`=1";    
    $result = mysql_query($query) or die ("Failed To get member files!"); 

    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {

        print("<img src=\"../media/hr450.gif\"/><br><a href=\"#\" onclick=\"javascript:downloadwindow('../Download.php?ID=".$line['URL']."');\">".$line['URL']."</a>");

    }
?>
</div>
<img src="../media/hr450.gif" alt="Help Systems" />

<div id="footer">
<p>RJS Management Services Ltd   Concorde House   Trinity Park   Solihull   B37 7UQ<br />
Tel.+44 (0)121 635 870   Email. <a href="mailto:action@h-elpsystems.com">action@h-elpsystems.com</a></p>
</div>
</div>

</div>
<div id="rightcolumn">

<? 
$query = "SELECT * FROM `News` ORDER BY `Date` DESC limit 0, 4";    
$result = mysql_query($query) or die ("Failed To get latest news!"); 

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $ShortContent=substr($line['Content'],0,175);
    print("<h2>".$line['Title']."</h2>".$ShortContent."...<p class=\"small\">".$line['Date']."</p><a href=\"../News.php?Article=".$line['ID']."\" class=\"clickformore\" ><span>click here for more</span></a><img src=\"../media/hr.gif\" alt=\"H-elp\" />");

} 
 ?>

 </div>


 </div>
 </body>
 </html>


 <?
 //Close any open connetions
 mysql_close;
 ?>
编辑:我已经尝试了每个人的答案,他们似乎以某种形式工作但由于某种原因,当我将更改的代码上传到服务器时,似乎在我点击就业法律页面时会显示一个空白页面。现在我不知道我是将它保存错误还是上传错误或是否有其他错误。

4 个答案:

答案 0 :(得分:1)

查看受影响链接上的来源:

<a href="#" onclick="javascript:downloadwindow('../Download.php?ID=Adoption Leave_Employee Guidelines_Nov 2012.pdf');">Adoption Leave_Employee Guidelines_Nov 2012.pdf</a>

您正在使用Javascript打开下载窗口,但我在Firefox中的Javascript控制台告诉我:

Error: ReferenceError: downloadwindow is not defined

您忘记为该系统上传丢失的Javascript(.js)文件或将其包含错误。

另外,当我尝试通过直接在Download.php打开URL下载?ID = .... pdf会导致存档文件损坏,但这是另一种情况我想。

答案 1 :(得分:1)

从@mastazi开始并添加一个iframe并将href定位到那个,这样你就可以留在页面上了:

<a href="download.php?pdf=..." target="downloadFrame">
<a href="...
<iframe style="display:none;" name="downloadFrame"></iframe>

答案 2 :(得分:0)

要做的第一件事是添加生成下载链接的就业页面中的代码。这将使我们了解下载来自网站的位置。

现在看起来问题是下载链接本身;所有链接只是指向带有主题标签的就业页面,但在主题标签后没有变量。因此,除非表单应该提交onclick数据(这种情况不太可能),否则下载URL不正确。

因此,请从显示下载链接的就业页面添加代码,我们可以从那里开始。


问题肯定是就业页面上的链接。我怀疑所包含的文件已被移动或修改。

检查include("../Functions.inc");是否仍然在相对于就业页面的路径中(即就业页面中的一个文件夹)。

在我看来,如果不是问题,接下来要做的就是修改代码。没有必要使用单独的JavaScript代码在新窗口中打开下载。

所以在就业页面上更改此行:

print("<img src=\"../media/hr450.gif\"/><br><a href=\"#\" onclick=\"javascript:downloadwindow('../Download.php?ID=".$line['URL']."');\">".$line['URL']."</a>");

对此:

print("<img src=\"../media/hr450.gif\"/><br><a href=\"../Download.php?ID=".$line['URL']."\" target=\"_blank\">".$line['URL']."</a>");

我希望这会有所帮助。

答案 3 :(得分:0)

您正在调用未包含在文档中的Javascript函数,因此显然无效。但是,传递给函数的值之一是文件的url(它是带有GET参数的PHP)并且它是正确的。 如果您不确切知道如何操作,请对每个链接执行以下操作:

而不是

<a href="#" onclick="javascript:downloadwindow('../Download.php?ID=Adoption Leave_Employee Guidelines_Nov 2012.pdf');">Adoption Leave_Employee Guidelines_Nov 2012.pdf</a>

试试这个:

<a href="../Download.php?ID=Adoption Leave_Employee Guidelines_Nov 2012.pdf">Adoption Leave_Employee Guidelines_Nov 2012.pdf</a>

即,从onclick语句中获取URL并将其放入href中。首先尝试仅修改第一个链接并测试它是否有效,然后对每个链接执行相同的过程。它需要一段时间,但它应该工作。