上传和下载Php MySQL脚本

上传和下载Php MySQL脚本,php,mysql,file,upload,download,Php,Mysql,File,Upload,Download,我使用了一个在线可用的脚本。php文件允许用户上传文件,然后将所选文件存储在MySQL数据库中。稍后,download.php脚本将显示存储在数据库中的所有文件的链接。当用户单击链接时,应下载该文件。我已附上下面的脚本。但问题是,当我点击链接时,文件的内容会显示出来,而不是下载 upload.php 请选择一个文件 download.php在顶部显示所有HTML,即使用户选择了要下载的文件。您需要将整个部分放入if中,这样它就不会放在下载的开头: if (!isset($_GET['id'])

我使用了一个在线可用的脚本。php文件允许用户上传文件,然后将所选文件存储在MySQL数据库中。稍后,download.php脚本将显示存储在数据库中的所有文件的链接。当用户单击链接时,应下载该文件。我已附上下面的脚本。但问题是,当我点击链接时,文件的内容会显示出来,而不是下载

upload.php

请选择一个文件

download.php
在顶部显示所有HTML,即使用户选择了要下载的文件。您需要将整个部分放入
if
中,这样它就不会放在下载的开头:

if (!isset($_GET['id']) { ?>
    <html>
    ...
    </html>
<?php } else {
    $con = mysql_connect('localhost', 'root', 'root') or die(mysql_error());
    ... // rest of script
}
if(!isset($\u GET['id']){?>
...

尝试添加
标题('Content-Transfer-Encoding:binary');
标题('Content-Description:File Transfer');
以及
读取文件($File);
作为示例。可能只是添加
读取文件($File)
就足够了。同样,
$file
是一个示例变量。但是,它很可能取决于标题。而不是
标题(“内容长度:$size”);
尝试
标题(“内容长度:”。文件大小($size))
@Fred ii-你的建议都没有任何意义。没有文件,数据在数据库中。
filesize
的参数是文件名,
$size
是数字。“当用户单击链接时,文件应该被下载。我在下面附上了脚本。但问题是,当我单击链接时,文件的内容会显示出来,而不是被下载。”@Barmar和我没有想到
$size
,这是OP的变量。@Fred ii-但是
filesize($size)是什么意思
$size
是大小,而不是文件名。我肯定要+1这个。我想我还是误解了这个问题。很好的表演巴尔马。
<html>
    <head>
        <title>Download File From MySQL Database</title>
        <meta http-equiv="Content-Type" content="text/html; 
              charset=iso-8859-1">
    </head>
    <body>
        <?php
        $con = mysql_connect('localhost', 'root', 'root') or die(mysql_error());
        $db = mysql_select_db('test', $con);
        $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'])) {
               $con = mysql_connect('localhost', 'root', 'root') or die(mysql_error());
               $db = mysql_select_db('test', $con);
               $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;
           }
           ?>
if (!isset($_GET['id']) { ?>
    <html>
    ...
    </html>
<?php } else {
    $con = mysql_connect('localhost', 'root', 'root') or die(mysql_error());
    ... // rest of script
}