2015-10-19 104 views
1

我需要從保存的目錄下載文件。我用下面的代碼PDF可下載PHP

$sqlh = mysql_query("SELECT * FROM tbl_health WHERE tbl_users_users_id = '".$id."'", $con) or die(mysql_error()); 

     while($data = mysql_fetch_array($sqlh)){ 

      $data['link']; 
      echo "<a href='view.php?id=" .$data['health_id']. "'>Download</a>"; 

     } 

view.php是

require_once('includes/db.php'); 
if(isset($_GET['id'])){ 
$sql = mysql_query("SELECT * FROM tbl_health WHERE  health_id='".$_GET['id']."'") or die(mysql_error()); 
echo $_GET['id']; 
$data = mysql_fetch_array($sql); 
$file = $data['link']; 
$name = "health/".$file; 
header("Content-Type: application/pdf"); 
header("Content-Length: ". filesize($name)); 
header("Content-Disposition:attachment;filename=". $file); 
$fp = @fopen($name, "r"); 
    fclose($fp); 
} 

文件被下載,但是當我打開該文件的內容會丟失。當我嘗試通過瀏覽器打開它時,它說此PDF文檔可能不會正確顯示

請任何人都可以告訴我我出了什麼問題。

+1

回聲會破壞文件 – 2015-10-19 03:10:45

+1

也我會改變最後2行到:\t \t'readfile($ name);' – 2015-10-19 03:12:22

+0

謝謝你。我刪除了回聲,並把你建議的readfile($ name);和它的工作。 Thanx :) – Andrew

回答

1

首先echo在標題調用應該給你一個錯誤,如果你有錯誤檢查。

然後fopen創建一個流句柄,但你什麼也不做。 readfile()會將文件發送給客戶端。