如何使用Laravel选择PHP中的BLOB文件



我在SQL数据库中存储了50张图像(BLOB)。如何选择它并将其显示为视图中的图像。

我尝试了这样的事情

Route::get('/', function () {
    $pics = DB::table('Employees')->get();
    return $pics; //just to test if i get something return from the db
    //return view('welcome', compact("pics"));
});

当我返回数据库查询时,我会得到一个很长的字符串。

FFD8FFE1001845786966000049492A00080000000000000000000000FFEC00114475636B7900010004000000500000FFE1031D687....

我在我看来尝试使用base64_encode这样的事情:

  @foreach ($pics as $pic)
        <img src="base64_encode({{ $pic->image }})" />
  @endforeach

不幸的是,这是不起作用的,我不知道如何编码它并将其返回为img属性src

您需要将十六进制值转换为字符串,然后用base64编码字符串。

将十六进制值转换为字符串:

$string = pack('H*', 'FFD8FFE1001845786966000049492A00080000000000000000000000FFEC00114475636B7900010004000000500000FFE1031D687');

然后用base64

编码字符串
$string = base64_encode($string);

然后,您可以使用数据URI模式显示图像。基于文件签名,您给出的十六进制字符串是JPG图像。您还应该相应地更改MIME类型。

<img src="data:image/jpg;base64,<?=$string?>" />

最新更新