2013-02-14 29 views
0

我想要做的只是每個用戶只允許一次下載(一次訪問一個href)爲此,我在用戶表中有一個變量,當鏈接已經變化時點擊。 我使用「download.php?file = file.xxx」來做到這一點。下載一次文件 - 損壞的文件錯誤

的download.php

$file= basename($_GET['file']); 
$root = "documents/rece/"; 
$path= $root.$file; 
echo $path; 

if (is_file($path)) 
{ 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename='.$file); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($path)); 
    readfile($path); 
} 
else 
     echo "File error"; 
    exit(); 

?> 

我也更新DDBB和工作。之後,我可以顯示或隱藏鏈接。問題是下載的文件已損壞,無法打開。我將使用pdf或doc,也許是zip。

難道是因爲路徑嗎?

+0

如果連接丟失怎麼辦?你應該在下載完成後設置標誌而不是點擊? – CloudyMarble 2013-02-14 11:19:11

+0

你是對的,我正在消除這種可能性。我會考慮的。無論如何,我的問題是,文件不正確。我不知道這是因爲標題(我認爲他們是正確的)還是因爲什麼...感謝您的評論 – legami 2013-02-14 11:21:57

+0

嘗試檢查任何BOM字符 – 2013-02-14 11:29:29

回答

0

PDF文件,據我所知,開始是這樣的:

%PDF-1.4 

此致開始4個空行加documents/rece/Form.pdf%PDF-1.4。您顯然已經在您發佈的代碼之前的某個位置打印了它。

+0

我有一個echo $路徑....可以這樣嗎?爲什麼我不能使用它? – legami 2013-02-14 12:23:45

+0

我會打個比方。想象一下你用你的凸輪拍攝一張照片,在Notepad ++中打開生成的JPEG,輸入你的名字並保存文件。照片會發生什麼? – 2013-02-14 12:29:36

+0

對。我認爲這個文件是以頭文件開頭的,之前的所有代碼都沒有包含在內。謝謝。 – legami 2013-02-14 12:31:33