从数据库下载单个文件

时间:2019-04-19 00:48:04

标签: php database phpmyadmin

我正在一个人们可以上传和下载文件的网站上工作。我可以按照自己的方式进行上传,并且也可以下载到该文件夹​​。我唯一遇到的问题是找到一种下载单个文件而不是全部文件的方法。以下代码用于从服务器/数据库下载。

// Downloads files
if (isset($_GET['file_id'])) {
$id = $_GET['file_id'];

// fetch file to download from database
$sql = "SELECT * FROM files WHERE id= $id";
$result = mysqli_query($conn, $sql);

$file = mysqli_fetch_assoc($result);
$filepath = 'uploads/' . $file['name'];

   if (file_exists($filepath)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' .      basename($filepath));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize('uploads/' . $file['name']));
    readfile('uploads/' . $file['name']);

    // Now update downloads count
    $newCount = $file['downloads'] + 1;
    $updateQuery = "UPDATE files SET downloads=$newCount WHERE id=$id";
    mysqli_query($conn, $updateQuery);
    exit;
}

}

下面的代码是PHP / HTML站点的代码,其中显示了所有文件,并允许用户下载文件。我只想列出一个文件,并可以选择链接到任何文件,而不是全部文件。如果将$ sql =“ SELECT * FROM files WHERE id = $ id”更改为7之类的数字或任何ID号,则可以下载一个文件,但是它仍然显示所有其他文件,但仍然只下载该文件每个链接上的ID 7。

<thead>
<th>ID</th>
<th>Filename</th>
<th>size (in mb)</th>
<th>Downloads</th>
<th>Action</th>

   <tr>
      <td><?php echo $file['id']; ?></td>
      <td><?php echo $file['name']; ?></td>
      <td><?php echo floor($file['size'] / 1000) . ' KB'; ?></td>
      <td><?php echo $file['downloads']; ?></td>
      <td><a href="downloads.php?file_id=<?php echo $file[$id]?    >">Download</a>       </td>
</tr>

如果有人能让我知道我在想什么,我将不胜感激。

0 个答案:

没有答案