将base64编码的dataURI图像插入MySQL BLOB字段

时间:2018-08-20 09:51:52

标签: php mysql base64 blob

我正在尝试将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());

1 个答案:

答案 0 :(得分:0)

如果您在http://php.net/manual/en/function.base64-encode.php阅读了base64_encode的PHP手册,则可以看到此函数返回字符串类型日期,并且MySQL Blob数据类型字段用于存储二进制数据,因此您尝试保存字符串(ASCII)代码转换成二进制数据,这就是问题所在。

要么将图像二进制内容保存为blob类型而不进行编码,要么使用varchar或text类型保存编码数据。