2012-12-04 30 views
-6

我一直在使用本网站寻找答案,但我找不到任何可能的帮助,所以我决定创建一个帐户,并问自己。pdf文件下载链接不能在php

这是我正在从事的网站的链接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:[email protected]" 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:[email protected]">[email protected]</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; 
?> 

编辑:我已经试过了大家的答案,他们似乎以某种形式,但由于某种原因,当工作我将更改后的代码上传到服务器,当我点击就业法网页时,它似乎会出现一个空白页。现在我不知道我是否保存错误或上传错误或者其他错误。

+0

似乎是这个问题的质量太低。 – StasGrin

+0

描述cms,what_have_you_tried和一些代码? – StasGrin

+0

所有下载链接上都有#个标签,您使用了哪些下载代码? –

回答

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>"); 

我希望这有助于。

+0

我已经添加了就业页面代码 – Sonnyjimjr3

+0

@ Sonnyjimjr3我修改了我的答案。首先检查php include,如果这不是问题,那么按照我所描述的方式更改代码。告诉我它是怎么回事。 – Marvin

+0

functions.inc文件位于根文件夹中,雇佣法则文件位于子文件夹中,所以是从就业页面开始的一个文件夹。 – Sonnyjimjr3

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?ID = ....打开URL下载它导致损坏的存档文件,但这是我猜的另一种情况。

+0

当我直接进入下载URL时,它已经正常下载。 – Marvin

+0

我再次尝试,是的,它工作,我收到一个工作PDF文件,但文件名为members_something.zip这可能会让用户感到困惑。 – chrki

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语句并将其放入href中。首先尝试修改第一个链接并测试它是否有效,然后对每个链接执行相同的过程。这将需要一段时间,但它应该工作。

+0

我改变了代码,使其具有您的建议,我将其上传到服务器,并刷新了就业法网页,它所做的只是一个空白页面,没有任何内容,因此实际上这个问题变得更糟。 – Sonnyjimjr3

+0

但是PHP正在工作,请自行尝试,请点击此处:http://www.h-elpsystems.co.uk/Download.php?ID=Adoption%20Leave_Employee%20Guidelines_Nov%202012.pdf – mastazi

+0

不够公平。它确实有效,但是当我点击就业法链接时,它正在打开一个空白页面。 – Sonnyjimjr3

1

围棋从@mastazi并添加iframe和目标的HREF到,这样你在网页上停留:

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

为什么要打扰iframe呢?指定目标=“_空白”,并获得相同的结果。 – Marvin

+0

我同意user247245关于留在页面上的必要性(我没有想到这一点),并与Peter Scott在使用'target =“_ blank”'',因为在我看来这是一个更干净的解决方案。 – mastazi

+0

@PeterScott,在download.php上尝试死('err'),你会看到为什么你需要一个iframe。 – Teson