【发布时间】:2014-02-13 00:12:29
【问题描述】:
我如何制作一个 PHP 脚本,让我可以从 MySQL 的数据库中下载文件。
我有一个名为files 的表,其中上传的文件保存在基于BLOB 的字段中。
+-------+----------+----------+------------+-------------------+--------+
|fileID | fileName | fileType | fileSize |fileData | userID |
+-------+----------+----------+------------+-------------------+--------+
| 1 | file1 | JPEG | 211258 |[BLOB - 206.3 KiB] | 1 |
| 2 | file2 | PNG | 211258 |[BLOB - 201.3 KiB] | 1 |
+-------+----------+----------+------------+-------------------+--------+
我无法找到调用文件下载的方法,每次尝试时,我都会获取文件的二进制数据,例如随机数和符号。
我已经尝试过这个查询,其中参数通过(fileID、fileName、fileType)传递到 download.php 页面:
$id = mysqli_real_escape_string($link, $_GET['fileID']);
$name = mysqli_real_escape_string($link, $_GET['fileName']);
$type = mysqli_real_escape_string($link, $_GET['fileType']);
$SELECT = "SELECT * FROM files WHERE fileID = $id AND fileName = $name ";
$result = mysqli_query($SELECT, $link);
$result = mysqli_fetch_assoc($result);
header("Content-type: $type");
echo $result['fileData'];
但这会导致一个没有输出的空白页面。
例如,我如何将 file1 作为 JPEG 文件下载到我的硬盘上?
【问题讨论】:
-
一个很好的理由不在数据库中存储文件。
-
@Dagon 那我应该把它们存放在哪里?
-
Content-type应该是image/jpeg可能会或可能不会解决您遇到的问题。老实说,您应该只将图像的路径存储在数据库中,而不是将它们存储为 blob -
文件应该存储在文件系统中
-
@elitechief21 我在上面的问题中使用的图像示例只是一个示例。我也想允许存储 zip 文件夹和 word 文档。