2016-04-22 126 views
2

我已经上传图像到MySQL数据库。我正在尝试下载保存的文件。但我的脚本显示以下警告:PHP文件不下载

警告:不能更改头信息 - 已经

发送了头我也测试:Content-Disposition: attachment。但它仍然不起作用。文件不下载,而是打印文件:

Printed file

这里是我的代码:

$query = "SELECT * FROM Upload"; 
$result = mysqli_query ($con, $query) 
    or die ("Couldn't execute SELECT query: ". mysqli_error($con)); 
$nrows = mysqli_num_rows($result); 


echo '<table> 
    <tr> 
     <td>Id</td> 
     <td>Name</td> 
     <td>Type</td> 
     <td>Size (MB)</td> 
    </tr>'; 
    $selfpg = $_SERVER['PHP_SELF']; 
    while($row = mysqli_fetch_assoc($result)){ 
     extract($row); 
     echo "<tr> 
       <td>$Id</td> 
       <td>$Name</td> 
       <td>$Type</td> 
       <td>$SizeMB</td> 
       <td> <a href='$selfpg?id=$Id'> Download </a> </td> 
      </tr>";  
} 
echo '</table>'; 

//---------------------------------------------------------------------- 
if (isset($_GET['id'])){ 
    mysqli_data_seek($result,0); 
    $row = mysqli_fetch_assoc($result); 
    extract($row); 
    header("Content-Type: ". $Type); 
    header("Content-Length: ". $SizeMB); 
    header("Content-Disposition: inline; filename= ". $Name); 
    echo $Content; 
} 
else{ 
    echo "<br>No id received to download a file</br>"; 
} 
+0

想要下载图片,或将其包含到网页上? – slax0r

+0

我想下载它。 – Amali

回答

1

你的脚本启动与echo输出数据。这意味着已经发送了默认标题,因为您正在向页面回复某些内容,因此您无法重新发送它们。为了能够在页面上回显某些内容,同时发送文件下载所需的头文件,您应该使用output buffering