如何在mysql数据库中保存大文件

时间:2012-03-26 10:59:58

标签: php mysql

我正在尝试在mysql数据库中上传一个10Mb文件,该字段的数据类型是LONGBLOB,我已经在my.ini文件中配置了最大允许数据包但我仍然无法保存该文件。低于10Mb的文件可以保存在数据库中,所以我想知道为什么它不能保存。我还需要检查其他地方才能使其正常工作吗?

max_allowed_packet = 1024M

这就是我获取数据的方式:

$data = $dbLink->real_escape_string(file_get_contents($_FILES['uploaded_file']['tmp_name']));

4 个答案:

答案 0 :(得分:5)

不要这样做,将文件保存在服务器上,而不是在数据库中引用它,否则你很快就会得到一个非常慢的数据库

答案 1 :(得分:3)

最好的方法是不要在数据库中保存二进制文件。

答案 2 :(得分:3)

虽然存在合理的情况,例如存储小图像时(尽管您实际上可以使用文件系统实现类似ROLLBACK的功能),但通常这是一个非常糟糕的主意。

文件应存储在磁盘上。对于大规模系统:在专门用于此目的的单独服务器上。

P.S。

您应该停止使用过时的mysql_*功能。他们已经超过10岁,不再维护了。甚至是弃用过程has begun。相反,您应该learn如何使用PDOMySQLi准备好的语句。

答案 3 :(得分:1)

不要那样做

TEXT和BLOB存储在表格之外,表格只有指向实际存储位置的指针。

当表具有TEXT或BLOB列时,表无法存储在内存中。这意味着每个查询(没有命中缓存)都必须访问文件系统 - 这比内存慢几个数量级。

而是在DB中保存文件的路径。