Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将base64编码的dataURI图像插入MySQL BLOB字段_Php_Mysql_Base64_Blob - Fatal编程技术网

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

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编码的dataURI图像(通过Ajax:post发送)插入MySQL表的BLOB字段中,并取得了成功。当前正在填充该字段,但当我显示图像时,它已损坏

数据通过Ajax发送,没有问题

以下是我的PHP代码(简化):


如果您阅读了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());