使用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 。为什么呢?
非常感谢任何帮助。感谢
答案 0 :(得分:2)
在我看来,你想要回显文件内容而不是文件名
$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 $rowsel['file_content']; //<-- changed line
当然你可能还有较大文件的问题,因为BLOB不足以容纳6.8兆。请参阅@ Fred-ii-评论以获取详细信息以及指向检查所需的所有相关信息的链接。
即使LONGBLOB只有4,294,967,295字节,也就是4Gig,所以在存储到LONGBLOB之前你可能需要进行一些大小检查。
最安全的建议是将实际文件存储在磁盘上,只存储数据库中的文件名和路径。