繁体   English   中英

如何从 laravel 中的 mysql 数据库中正确加载图像 blob?

[英]How to correctly load image blob from mysql database in laravel?

我正在使用 laravel 在页面上显示项目列表。 每个项目都有多个图像,但在这个视图中,我只希望显示第一个图像,但这并不重要。 我相信我正确地存储了图像,因为我可以从数据库中下载一个.bin文件并在浏览器中打开它,这样我就可以正确地查看图像。 此数据库属性的类型为BLOB

所以我的项目与 ItemImages 表有hasMany关系,我尝试使用它来访问图像,但图像永远不会加载,并且插入的 src 总是类似于C:\xampp\tmp\php780D.tmp

在 controller function 我只是获取数据,如下所示:

public function item_index(){
    $itemsInDatabase = Item::all();
    return view('admin.item_index')->with('items',$itemsInDatabase);
}

所以,在我看来,我是这样访问的:

@foreach($items as $item)
    <div class="col">
        <div class="card mb-3" style="max-width: 540px;">
            <div class="row no-gutters">
                <div class="col-md-4">
                    <img src="{{$item->item_images[0]->image}}" alt="..."/>
                </div>
                <div class="col-md-8">
                    <div class="card-body">
                        <h5 class="card-title">{{$item->name}}</h5>
                    </div>
                </div>
            </div>
        </div>
    </div>
@endforeach

数据正确到达视图,因为如果我转储$item->item_images ,它会显示与该项目关联的所有 ItemImages 对象。 所以我的问题是这个图像在视图中的实际渲染。

我想知道我是否不能使用关系来加载图像,并且在声明该图像源属性之前我必须做一些额外的处理。

正如@RiggsFolly 所问,上传脚本是这样的:

if($files=$request->file('item_images')){
    foreach($files as $file){
        $newItemImage = new ItemImage();
        $newItemImage->image = $file;
        $newItemImage->item_id = $newItem->id;
        $newItemImage->save();
    }
}

谢谢你的时间!

试试看:

<img class="" src="data:image/png;base64,{{ chunk_split(base64_encode($m->blob_midia)) }}" height="300" alt="photo">

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM