2012-12-04 32 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