我已将图像上传到MySQL数据库。我正在尝试下载保存的文件。但我的脚本显示以下警告:
警告:无法修改标头信息 - 已由
发送的标头
我也测试过:Content-Disposition: attachment
。但它仍然无效。文件无法下载,而是打印文件:
这是我的代码:
$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 :(得分:1)
您的脚本开始使用echo
输出数据。这意味着已经发送了默认标头,因为您正在向页面回显某些内容,因此您无法重新发送它们。为了能够向页面回显某些内容,同时还发送下载文件所需的标题,您应该使用output buffering