PHP文件无法下载

时间:2016-04-22 06:01:32

标签: php sql

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

  

警告:无法修改标头信息 - 已由

发送的标头

我也测试过: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>";
}

1 个答案:

答案 0 :(得分:1)

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