当前位置:  开发笔记 > 编程语言 > 正文

如何使用PHP在MySQL数据库中插入大文件?

如何解决《如何使用PHP在MySQL数据库中插入大文件?》经验,为你挑选了2个好方法。

我想将最大大小为10MB的大文件上传到我的MySQL数据库.使用.htaccess我将PHP自己的文件上传限制更改为"10485760"= 10MB.我可以毫无问题地上传最大10MB的文件.

但是如果文件大小超过1 MB,我就无法在文件中插入该文件.

我正在使用file_get_contents读取所有文件数据并将其作为要插入LONGBLOB字段的字符串传递给插入查询.

但是大于1 MB的文件不会添加到数据库中,但我可以使用它print_r($_FILES)来确保正确上载文件.任何帮助将不胜感激,我将在接下来的6个小时内需要它.所以,请帮忙!



1> Cody Caughla..:

您将需要检查MySQL配置值"max_allowed_pa​​cket",该值可能设置得太小,从而阻止INSERT(其本身很大)发生.

从mysql命令提示符运行以下命令:

mysql> show variables like 'max_allowed_packet';

确保它足够大.有关此配置选项的更多信息,请参阅

MySQL max_allowed_pa​​cket

这也会影响PHP中的mysql_escape_string()和mysql_real_escape_string(),限制字符串创建的大小.



2> roborourke..:

据我所知,通常更快更好的做法是不将文件存储在数据库中,因为它会很快变大并减慢速度.最好将文件存储在目录中,然后将文件的位置存储在数据库中.

我们通过为url-safe文件名命名的文件创建文件夹并在db中存储文件夹名称,在我们工作的CMS中为images/pdfs/mpegs等执行此操作.然后,只需在表示层中写出它的url就很容易了.


我试验了文件系统存储.我发现保持数据库和FS同步是一个额外的问题......如果有人删除了FS上的文件怎么办?如果删除了数据库记录但相关文件仍在FS上,该怎么办?当涉及到DB之外的某些东西时,使DB操作成为原子是很复杂的.
这通常适用于mysql,因为blob不是真正的blob,但限制为4GB(对于longblob).真正的DBMS(Oracle,MSSQL,Firebird)没有这个限制,也根本没有减速.当所有内容都在单个数据库中时,处理备份和还原会更加容易.无论如何,如果你坚持使用MySQL,你可以使用mysqli_stmt_send_long_data以块的形式传输大文件.
推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有