如何编写一个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'];
但这会导致页面空白,没有输出。
如何将文件1下载为JPEG文件保存到我的硬盘?
Content-type
应该是image/jpeg
,这可能会解决你遇到的问题。老实说,你应该将图片的路径存储在数据库中,而不是将它们存储为二进制大对象。 - elitechief21application/octet-stream
作为Content-type
,但这种方式不好使用,因为你不知道你正在下载的文件类型。你可以将文件类型存储为image/jpeg
、image/png
、application/zip
等,并保持你的代码不变。 - elitechief21