我正在尝试将base64编码的dataURI图像(通过Ajax:post发送)成功插入MySQL表的BLOB字段中。当前正在填充该字段,但是当我显示图像时,它已损坏。
数据通过Ajax正常发送。
这是我的PHP代码(简体):
$encodedData = filter_var($_POST['encodedData'], FILTER_SANITIZE_STRING);
$encodedData = str_replace(' ','+',$encodedData);
$encodedData = substr($encodedData, strpos($encodedData, ",") + 1);
$decodedData = base64_decode($encodedData);
$doinsertphoto = mysql_query("INSERT INTO subscriber_photo (SubscriberId, Photo) VALUES ('" . $subscriber_id . "', '" . mysql_real_escape_string($decodedData) . "')") or die(mysql_error());
答案 0 :(得分:0)
如果您在http://php.net/manual/en/function.base64-encode.php阅读了base64_encode的PHP手册,则可以看到此函数返回字符串类型日期,并且MySQL Blob数据类型字段用于存储二进制数据,因此您尝试保存字符串(ASCII)代码转换成二进制数据,这就是问题所在。
要么将图像二进制内容保存为blob类型而不进行编码,要么使用varchar或text类型保存编码数据。