我试图将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());

最佳答案

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

您无需编码即可将图像二进制内容保存为Blob类型,或者使用varchar或text类型保存编码数据。

关于php - 将base64编码的dataURI图像插入MySQL BLOB字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51928135/

10-10 06:07