为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 从 DB 显示/加载 BLOB 图像看起来总是像白色立方体/正方形

Laravel 从 DB 显示/加载 BLOB 图像看起来总是像白色立方体/正方形

PHP
桃花长相依 2021-11-26 14:50:05
我正在使用 laravel 并且使用 MySQL 数据库。我将图像作为 blob 保存到数据库中,如下所示:$path = $data->file;$image = file_get_contents($path);$base64 = base64_encode($image);DB::connection('mysql_live')->table('users_comments_files')->insert(    ['comment_id' => $data->comment_id, 'filename' => 'TEST', 'date_added' => date("Y-m-d H:i:s"), 'date_modified' => date("Y-m-d H:i:s"),    'filetype' => 'image/png', 'file' => $base64]);文件列中有一些数据,所以我认为它有效。现在我想在 iframe 或 atm 中显示图像。创建一个网址。这是我如何尝试在视图中创建/显示 blob 的相关部分:return '<img data="data:' . $result->filetype . ';base64,' . $result->file . '" type="' . $result->filetype . '" class="object-elem"></img>我尝试像这样显示它们:$result = DB::connection('mysql_live')->table('users_comments_files')->where('id', $element_id)->first();$object_type = 'object';if (str_contains($result->filetype, 'image')) {    $object_type = 'img';}return '<' . $object_type . ' data="data:' . $result->filetype . ';base64,' . $result->file . '" type="' . $result->filetype . '" class="object-elem"></' . $object_type . '> <style>    body {        background-color:#3a3a3a;    }    .object-elem {        position: absolute;        top: 0;        bottom: 0;        left: 0;        right: 0;        margin: auto;        min-width: 100px;        min-height: 100px;    }</style>'; 我没有收到任何错误,但结果总是一个白色方块/立方体:
查看完整描述

1 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

您需要删除双Base64编码,并填写属性src未data在<img>标签


<' . $object_type . ($object_type == 'img'?'src':'data') . ' 

    ="data:' . $result->filetype . ';base64, ' . $result->file . '" type="' . $result->filetype . '" class="object-elem">

</' . $object_type . '>


查看完整回答
反对 回复 2021-11-26
  • 1 回答
  • 0 关注
  • 214 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信