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

时间:2017-12-11 15:13:47

标签: php laravel-5.4

我有50个图像存储在SQL数据库(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"));

});

当我返回db查询时,我得到一个非常长的图像字符串。

FFD8FFE1001845786966000049492A00080000000000000000000000FFEC00114475636B7900010004000000500000FFE1031D687....

我在我的观点中尝试使用base64_encode这样的内容:

  @foreach ($pics as $pic)

        <img src="base64_encode({{ $pic->image }})" />

  @endforeach

遗憾的是,这不起作用,我不知道如何编码并将其作为img属性src的路径返回。

1 个答案:

答案 0 :(得分:0)

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

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

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

然后用base64编码字符串

$string = base64_encode($string);

然后您可以使用Data URI schema来显示图像。基于file signatures,您给出的十六进制字符串是jpg图像。您还应该相应地更改mime类型。

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