PHP下载脚本无法下载上传的文件

时间:2014-07-17 03:46:25

标签: php

我想在我的网站上创建一个上传和下载功能。上传脚本正在运行,但下载脚本无法正常工作。我没有收到任何错误,但一旦从数据库中检索文件我无法下载它。如果我单击该文件,文件内容将在同一页面中打开。

        <?php
        $query = "SELECT id, name FROM upload";
        $result = mysql_query($query) or die('Error, query failed');
        if(mysql_num_rows($result) == 0) {
            echo "Database is empty <br>";
        } else {
            while(list($id, $name) = mysql_fetch_array($result)) {
                ?>
                <a href="download.php?id=<?php echo urlencode($id);?>"><?php echo urlencode($name);?></a> <br>
                <?php
            }
        }
        mysql_close();
        ?>
    </body>
</html>
<?php
if(isset($_GET['id'])) {
    // if id is set then get the file with the id from database
    $id    = $_GET['id'];
    $query = "SELECT name, type, size, content " .
    "FROM upload WHERE id = '$id'";
    $result = mysql_query($query) or die('Error, query failed');
    list($name, $type, $size, $content) = mysql_fetch_array($result);
    header("Content-length: $size");
    header("Content-type: $type");
    header("Content-Disposition: attachment; filename=$name");
    ob_clean();
    flush();
    echo $content;
    mysql_close();
    exit;
}
?>

这是下载网站的网址:download

1 个答案:

答案 0 :(得分:1)

You can't set any headers after output has been sent to the browser。这显然是在你执行最后一批代码时完成的,因为你上面有HTML代码。

应该将代码放在脚本的顶部而不是底部。

错误的是,听起来你没有收到任何错误。您应该至少在本地/开发环境中打开错误报告:

error_reporting(E_ALL);

这可能会立即告诉您问题的原因,并帮助您快速诊断。