我正在尝试在mysql数据库中上传一个10Mb文件,该字段的数据类型是LONGBLOB,我已经在my.ini文件中配置了最大允许数据包但我仍然无法保存该文件。低于10Mb的文件可以保存在数据库中,所以我想知道为什么它不能保存。我还需要检查其他地方才能使其正常工作吗?
max_allowed_packet = 1024M
这就是我获取数据的方式:
$data = $dbLink->real_escape_string(file_get_contents($_FILES['uploaded_file']['tmp_name']));
答案 0 :(得分:5)
不要这样做,将文件保存在服务器上,而不是在数据库中引用它,否则你很快就会得到一个非常慢的数据库
答案 1 :(得分:3)
最好的方法是不要在数据库中保存二进制文件。
答案 2 :(得分:3)
虽然存在合理的情况,例如存储小图像时(尽管您实际上可以使用文件系统实现类似ROLLBACK
的功能),但通常这是一个非常糟糕的主意。
文件应存储在磁盘上。对于大规模系统:在专门用于此目的的单独服务器上。
您应该停止使用过时的mysql_*
功能。他们已经超过10岁,不再维护了。甚至是弃用过程has begun。相反,您应该learn如何使用PDO或MySQLi准备好的语句。
答案 3 :(得分:1)
不要那样做
TEXT和BLOB存储在表格之外,表格只有指向实际存储位置的指针。
当表具有TEXT或BLOB列时,表无法存储在内存中。这意味着每个查询(没有命中缓存)都必须访问文件系统 - 这比内存慢几个数量级。
而是在DB中保存文件的路径。