在 PHP Mysql 中下载完整大小的文件
Download Full size of File in PHP Mysql
我在使用 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中的table:
问题 [已更新]
这里的问题似乎是下载文件后,该特定文件的文件大小与 mysql 中保存的文件大小不匹配。不知道为什么?
我也遇到了这个小问题,我下载了powerpoint删除后重新下载会自动保存到下载,会自动打开。正常吗?
示例:
文件大小为 6.8MB 的 BLOB 文件本应以 6.8MB 下载,但此处发生的情况是下载文件的文件大小仅为 25 字节。为什么?
如有任何帮助,我们将不胜感激。谢谢
在我看来你想要回显文件内容而不是它的文件名
$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 Meg。请参阅@Fred-ii- 评论以了解详细信息以及您需要检查的所有相关信息的链接。
即使是 LONGBLOB 也只有 4,294,967,295 字节,也就是 4Gig 多一点,因此您可能需要在存储到 LONGBLOB 之前进行一些大小检查。
最安全的建议是将实际文件存储在磁盘上,并且只将文件名和路径存储在数据库中。
我在使用 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中的table:
问题 [已更新]
这里的问题似乎是下载文件后,该特定文件的文件大小与 mysql 中保存的文件大小不匹配。不知道为什么?
我也遇到了这个小问题,我下载了powerpoint删除后重新下载会自动保存到下载,会自动打开。正常吗?
示例:
文件大小为 6.8MB 的 BLOB 文件本应以 6.8MB 下载,但此处发生的情况是下载文件的文件大小仅为 25 字节。为什么?
如有任何帮助,我们将不胜感激。谢谢
在我看来你想要回显文件内容而不是它的文件名
$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 Meg。请参阅@Fred-ii- 评论以了解详细信息以及您需要检查的所有相关信息的链接。
即使是 LONGBLOB 也只有 4,294,967,295 字节,也就是 4Gig 多一点,因此您可能需要在存储到 LONGBLOB 之前进行一些大小检查。
最安全的建议是将实际文件存储在磁盘上,并且只将文件名和路径存储在数据库中。