0

我正在学习 PHP,并尝试创建一个连接到 mysql 数据库的简单 php 上传和下载脚本。我使用 uid() 为每个文件生成一个特殊的 id 并将其存储在数据库中。我快完成了,但问题是我不知道如何编写 download.php 代码?请帮我。我正在分享我的 index.php、upload.php 和 download.php 当前文件。

我的 index.html 有这种形式

<form enctype="multipart/form-data" action="uploader.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>

我的 Uploader.php 文件有这个代码

$target_path = "uploads/";

$target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ".  basename( $_FILES['uploadedfile']['name']). 
" has been uploaded";
} 
$uid = uniqid();
$filename = basename( $_FILES['uploadedfile']['name']);
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$sql = 'INSERT INTO replitz_file '.
   '(file_uid,file_name) '.
   'VALUES ( "$uid", "$filename" )';

mysql_select_db('replitz');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not enter data: ' . mysql_error());
}
echo "http://localhost/Project/download.php?$uid";
mysql_close($conn);

我的 Download.php 代码是

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$db = mysql_select_db('replitz', $con);
        $file = $_GET['_'];
        $query = "SELECT * FROM replitz_files WHERE id='$file_uid'";
        $result = mysql_query($query);
        $r = mysql_fetch_array($result);

$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Link Not Valid: ' . mysql_error());
echo "Link Not Valid";
mysql_close($conn);

现在请告诉我应该在 Download.php 中使用哪个代码从存储在数据库中的 uid() 生成的代码下载文件。

4

1 回答 1

0

您可以通过指定自定义标头并使用 readfile 来包含该文件,直接从您的 dowload.php 下载文件。查看此堆栈问题: 如何在 PHP 中返回文件

于 2013-07-26T23:01:01.637 回答