我正在尝试将 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数据类型字段是用来存储二进制数据的,所以你试图将字符串(ASCII)代码保存为二进制数据,这就是问题所在。
要么将图像二进制内容保存为 blob 类型而不进行编码,要么使用 varchar 或 text 类型保存编码数据。
关于php - 将base64编码的dataURI图像插入MySQL BLOB字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51928135/