【问题标题】:Inserting base64 encoded dataURI image into MySQL BLOB field将 base64 编码的 dataURI 图像插入 MySQL BLOB 字段
【发布时间】:2019-01-26 10:18:16
【问题描述】:

我正在尝试将 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());

【问题讨论】:

  • 找到它不工作的原因。不需要 imagecreatefromstring() 函数,我所要做的就是将 mysql_real_escape_string() 添加到数据库查询中。更新上面的代码。

标签: php mysql base64 blob


【解决方案1】:

如果你在http://php.net/manual/en/function.base64-encode.php阅读了base64_encode的PHP手册,你可以看到这个函数返回字符串类型日期,而MySQL Blob数据类型字段用于存储二进制数据,所以你试图将字符串(ASCII)代码保存到二进制数据,这就是问题所在。

要么将图像二进制内容保存为不编码的 blob 类型,要么使用 varchar 或 text 类型保存编码数据。

【讨论】:

  • 这就是我使用 imagecreatefromstring() 函数的原因?
  • @GuvencKaplan,你能详细说明一下吗?
  • 你要我详细说明什么? imagecreatefromstring() 应该从一个字符串创建一个二进制文件。
猜你喜欢
  • 2019-07-09
  • 1970-01-01
  • 1970-01-01
  • 2012-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 2021-02-17
相关资源
最近更新 更多