[英]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.