Php 将base64编码的dataURI图像插入MySQL BLOB字段
我正在尝试将base64编码的dataURI图像(通过Ajax:post发送)插入MySQL表的BLOB字段中,并取得了成功。当前正在填充该字段,但当我显示图像时,它已损坏 数据通过Ajax发送,没有问题 以下是我的PHP代码(简化):Php 将base64编码的dataURI图像插入MySQL BLOB字段,php,mysql,base64,blob,Php,Mysql,Base64,Blob,我正在尝试将base64编码的dataURI图像(通过Ajax:post发送)插入MySQL表的BLOB字段中,并取得了成功。当前正在填充该字段,但当我显示图像时,它已损坏 数据通过Ajax发送,没有问题 以下是我的PHP代码(简化): 如果您阅读了base64_encode at的PHP手册,您可以看到这个函数返回字符串类型date,MySQL Blob数据类型字段用于存储二进制数据,因此您试图将字符串(ASCII)代码保存到二进制数据中,这就是问题所在 您可以将图像二进制内容保存为blob类
如果您阅读了base64_encode at的PHP手册,您可以看到这个函数返回字符串类型date,MySQL Blob数据类型字段用于存储二进制数据,因此您试图将字符串(ASCII)代码保存到二进制数据中,这就是问题所在
您可以将图像二进制内容保存为blob类型而不进行编码,或者使用varchar或text类型来保存编码数据。这就是我使用imagecreatefromstring()函数的原因?@GuvencKaplan,您能详细说明一下吗?您想让我详细说明什么?imagecreatefromstring()应根据字符串创建二进制文件。找到了该文件不起作用的原因。imagecreatefromstring()函数是不需要的,我所要做的就是在数据库查询中添加一个mysql\u real\u escape\u string()。更新上面的代码。
$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());