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

标签 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());

最佳答案

如果您阅读 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/

相关文章:

mysql - 如何使用mysql在子查询结果中设置默认值

angular - 如何使用 ng2-file-upload 在 base64 中发送图像?

php - 将 BASE64 编码图像打印到 PDF 文档中

php - 字段不在实体中的 Symfony2 表单

PHP foreach 更改原始数组值

php - 仅选择排名最高的组

php - PHP 示例代码从 mysqli 到 PDO 的翻译

mysql - 测试前如何从开发数据库加载数据?

google-app-engine - 在 golang ( appengine ) 上无填充的 Base64 编码/解码

javascript - 从 ajax 接收结果后打开一个弹出框