显示BLOB图片数据查看

Display BLOB image data to view

目标:我正在尝试将图像显示到我的 Laravel 7 视图中,直接从数据库中检索。

在我的MySQLWORKBENCH:

进程:

  1. 正如您在我的控制器 JobsController 中看到的那样,我将 select 并从数据库中检索图像,由 jobs $job_name 识别。

如您所见,我尝试了 dd($job_name),我们可以在 $job_image 变量中看到 BLOB 数据。我会通过这个Collection对象来直接查看和显示它。

大多数 SO 问题都与使用 <img src="myFileName"/> 显示图像有关。 问题是我没有将它存储为文件,而是直接检索并显示它。我只想像其他工作细节一样将所有变量转储到我的视图文件中。

在我的视图文件中尝试过的解决方案。

  1. <img>{{ base64_encode($job_details->job_image) }}</img>。失败的。输出是“/9j/4AAQSkZJRgABAQ”。

  2. <img>{{ base64_decode($job_details->job_image) }}</img>。我不太了解在数据库中存储数据和从数据库中检索数据时会发生什么编码和解码。在这里我解码了变量。无输出。

  3. <img src="{{ $job_details->job_image}}"/>。这很愚蠢,src 属性需要一个 PATH。

因此,其中 none 会将变量内容转换为图像。 请告诉我我在这里缺少什么。

你快到了。您必须在 src 属性中使用 base64 字符串。确保在开头还包括数据类型和其他相关信息。参见:How to display Base64 images in HTML?

试试这个

$image = 'your_image_blob_name';

$imageData = base64_encode(file_get_contents($image));

$src = 'data: '.mime_content_type($image).';base64,'.$imageData;

echo '<img src="'.$src.'">';