2015-10-19 93 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()会将文件发送给客户端。