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

我正在使用 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>'; 

我没有收到任何错误,但结果总是一个白色方块/立方体:

http://img4.mukewang.com/61a083b00001fcf105740396.jpg

桃花长相依
浏览 215回答 1
1回答

猛跑小猪

您需要删除双Base64编码,并填写属性src未data在<img>标签<' . $object_type . ($object_type == 'img'?'src':'data') . '&nbsp;&nbsp; &nbsp; ="data:' . $result->filetype . ';base64, ' . $result->file . '" type="' . $result->filetype . '" class="object-elem"></' . $object_type . '>
打开App,查看更多内容
随时随地看视频慕课网APP