【问题标题】:Retrieving image (Resource id #245) instead of base64检索图像(资源 id #245)而不是 base64
【发布时间】:2020-05-02 17:05:02
【问题描述】:

我正在使用 Cakephp 开发一个网站,并且我正在将数据库中的图像作为 BLOB 上传。现在,当我从我的 Cakephp 代码中检索 BLOB 数据时,我收到一个文本“资源 id #245”。如何将其转换为 base64?

显示图片代码

foreach($foods as $food)
{
   echo $food->image;
}

结果

资源 id #245(我需要这个作为 base64)

CakePhp 3.8 版

【问题讨论】:

  • 显示您的代码。众所周知,模糊的描述很难调试。
  • 这是我正在做的唯一代码,只是为每个显示图像做一个简单的代码
  • 欢迎使用 StackOverflow,请始终提及您的 exact CakePHP 版本(vendor/cakephp/cakephp/VERSION.txtlib/Cake/VERSION.txt 中的最后一行),这样人们可以更轻松地帮助您问题 - 谢谢!

标签: php cakephp base64 blob cakephp-3.x


【解决方案1】:

二进制列类型将自动与\Cake\Database\Type\BinaryType database type 关联,这会将数据作为流返回。

所以您可以使用FilesystemStream 函数来读取数据,并将其转换为您想要的任何内容,例如:

$binaryData = stream_get_contents($food->image);
$base64Data = base64_encode($binaryData);

【讨论】:

  • 所以在我的情况下,我只需输入$binaryData = stream_get_contents($food->image) 或者我需要添加其他内容:) ?
  • @i_love_code 我没有看到你的更新,我已经更新了示例。为了检索数据,是的,这就是你要做的。如果你想要它作为base64,那么你当然还需要相应地对其进行编码,只是说以防你不只是指你的变量/实体。
  • 是的,它工作得很好:D。谢谢@ndm。我实现了该代码,但是我在 base64_encode 中犯了一个愚蠢的错误,但现在它正在工作。
猜你喜欢
  • 2022-01-25
  • 2015-03-17
  • 2012-02-24
  • 2012-06-08
  • 1970-01-01
  • 1970-01-01
  • 2013-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多