【发布时间】:2015-12-10 14:56:58
【问题描述】:
我在使用 php 从 MYSQL 下载 Blob 文件 时遇到问题。
这是我下载文件的php脚本:
$querysel = "Select * from file where file_id = '$fileid'";
$resultsel = mysql_query($querysel);
$rowsel = mysql_fetch_array($resultsel);
$filename = $rowsel['file_name'];
$mimetype = $rowsel['mime_type'];
$filesize = $rowsel['file_size'];
header("Content-length: ".$filesize);
header("Content-type: ".$mimetype);
header("Content-disposition: attachment; filename=".$filename);
header("Content-Description: PHP Generated Data");
header("Content-transfer-encoding: binary");
echo $filename;
问题 [更新]
这里的问题似乎是下载文件后,该特定文件的文件大小与保存在 mysql 中的文件大小不匹配。不知道为什么?
我也遇到了这个小问题,我下载了Powerpoint删除后重新下载会自动保存到下载并自动打开。这正常吗?
例子:
文件大小为 6.8MB 的 BLOB 文件应该也以 6.8MB 下载,但这里发生的情况是下载文件的文件大小仅为 25bytes。为什么?
任何帮助将不胜感激。谢谢
【问题讨论】:
-
我想你会发现“01 LCD Slides 1.pps”大约有 25 个字符。也许您想返回文件,而不是文件名?
-
最后一行:
echo $filename不发送内容,只发送一个文件名(大概 25 字节长?) -
P.S.通常建议您将文件上传到文件系统,而不是 数据库。您可以将文件名、路径和元数据存储在 db 中,但通常不建议将文件存储在 db 中。
-
BLOB不够大,无法存储这么大的文件。 6.8 MiB dev.mysql.com/doc/refman/5.0/en/blob.html -
引用自stackoverflow.com/questions/5775571/… 中的答案 “BLOB 最多可以是 65535 字节。如果您需要更多,请考虑使用 MEDIUMBLOB 16777215 字节或 LONGBLOB 4294967295 字节。请参阅存储要求字符串类型了解更多信息。”