我想在25mb左右插入一个文件。在我的服务器max_allowed_packet中 值是16mb,我无法更改服务器配置。我怎么能够 将文件插入mysql blob?我在我的本地使用过这段代码 主办。它工作正常。但这不适用于我的在线服务器。
$mysqli = new mysqli("localhost", "root", "", "test");
$stmt = $mysqli->prepare("INSERT INTO FILES_DATA (FileData) VALUES (?)");
$null = NULL;
$stmt->bind_param("b", $null);
$fp = fopen("Wildlife.wmv", "r");
echo('<br>fp='.$fp);
while (!feof($fp)) {
$stmt->send_long_data(0, fread($fp, 8192));
}
fclose($fp);
$stmt->execute();
创建表的SQL:
CREATE TABLE IF NOT EXISTS 'files_data' (
'Id' int(11) NOT NULL AUTO_INCREMENT,
'FileData' longblob,
PRIMARY KEY ('Id')
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
提前致谢。
答案 0 :(得分:0)
解决方法 - 使用一些BLOB字段来存储文件。将25MB文件拆分为两个字节数组:16MB + 9MB,然后使用HEX符号将它们插入表中,例如: -
INSERT INTO table files(id, data1, data2) VALUES(1, 0x616263..., 0x78797A...)