我正在尝试将文件作为 Blob 从表单上传到 MySQL 数据库。问题是 max_allowed_packet 为 65536 字节,如果文件超过该大小,则会损坏。
现在我这样做是为了获取文件内容,它有效:
$certificateWaiverFile = file_get_contents($_FILES['inputCertificateWaiverFile']['tmp_name']);
然后我使用 send_long_data()
将其插入数据库:
$stmt->send_long_data(28, $certificateWaiverFile);
一旦到达数据库,它就会说 blob 是 65536 字节,尽管它实际上是 360KB。当我尝试下载它时,它神秘地显示为 352KB,而不是 65536 字节。
假设我无法调整 max_allowed_packet,关于如何分解文件以实际将其正确存储在数据库中的任何想法?谢谢!
最佳答案
我发现了这个问题。我使用的是 BLOB
而不是 MEDIUMBLOB
,这将限制从 64kb 更改为 16mb。现在我知道了!
关于PHP/MySQLi - file_get_contents() 超出允许的最大数据包数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19961084/