[英]How to display Blob image in Laravel blade template file?
我想显示我的数据库中存储为 blob 图像的图像。 我执行以下操作:
echo '<img src="data:image/JPG;base64,'.base64_encode($item->image).'"/>'; ?>
它给了我错误:
图像无法显示,因为它包含错误
我是这样上传的
$base64 = base64_encode($img);
DB::table('items')->InsertGetId([
'item'=>$item,
'des'=>$des,
'unit_sel'=>$sell,
'unit'=>$unit,
'stock'=>$stock,
'weight'=>$weight,
'cat'=>$cat,
'image'=>$base64
]);
我使用 Laravel 5.5。 我该如何解决这个问题?
我已经在 Reddit 回复过,但我总结一下 3 点:
echo
而不是双花括号{{ }}
,这可以允许 Persistent XSS atacks 。如果您需要将图像存储在数据库中,我建议为图像检索创建单独的路由,因为这样浏览器会缓存图像并避免每次必须显示图像时查询数据库,并加快页面速度图片。
我将图像作为 BLOB 存储在由 product_id 标识的 MYSQL PRODUCT 表中
刀刃:
<img src="/dbimage/{{$product->id}}.png" >
路线:
Route::get('/dbimage/{id}',[ProductImageController::class, 'getImage']);
控制器:
class ProductImageController extends Controller
{
public function getImage($prodcutImageID){
$productID=explode(".",$prodcutImageID);
$rendered_buffer= Product::all()->find($productID[0])->image;
$response = Response::make($rendered_buffer);
$response->header('Content-Type', 'image/png');
$response->header('Cache-Control','max-age=2592000');
return $response;
}
}
这使浏览器缓存图像
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.