我想显示数据库中存储为斑点图像的图像。我执行以下操作:
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。我该如何解决这个问题?
答案 0 :(得分:0)
I already replied in Reddit,但我将总结三点:
echo
而不是双花括号{{ }}
,这可以允许持久使用XSS atacks。答案 1 :(得分:0)
如果您需要将图像存储在数据库中,我建议为图像检索创建一条单独的路径,因为这样浏览器会缓存图像,并避免每次必须显示图像时都查询数据库,并通过很多图像。
我将图像作为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;
}
}
这使浏览器缓存图像