Как получить изображение из базы данных для просмотра файла в laravel - PullRequest
0 голосов
/ 26 декабря 2018
 <img  src="{{$post->image}}"  width="140" height="140">

это строка, которую я использую для получения изображения из базы данных для просмотра файла

я использую нижний контроллер для получения этого изображения

public function show($id)
{

    $post=Clients::find($id);
    return view('pet.shw',['post'=>$post,'pets'=>$post->pets]); }

, а также показан файл миграцииниже

public function up()
{
    Schema::create('clients', function (Blueprint $table) {
        $table->increments('id');
        $table->string('ename');
        $table->string('mobile');
        $table->string('mail');
        $table->binary('image') ; //image that i wanna use 
        $table->mediumText('Discription');
        $table->timestamps();
    });
}

этот подход не работал представление показывает вот так как я могу решить эту проблему, предложить новые подходы лучше, чем я, я не могу использовать папку public / storage, потому чтовсе изображения должны быть сохранены в базе данных

1 Ответ

0 голосов
/ 26 декабря 2018

Попробуйте это

$img = base64_encode($post->image);

<img src="data:image/jpg;charset=utf8;base64,<?php echo $img ?>"/>

Или вы можете просто заменить строку изображения на следующее

<img src="data:image/jpg;charset=utf8;base64,{{base64_encode($post->image)}}"/>

Чтобы динамически установить тип MIME, создайте вспомогательную функцию и используйте ее

function constructImageFromBinary($file, $mime) 
{  
  $contents = file_get_contents($file);
  $base64   = base64_encode($contents); 
  return ('data:' . $mime . ';charset=utf8;base64,' . $base64);
}

и используйте функцию справки в шаблоне лезвия, как показано ниже

<img src="@php echo constructImageFromBinary($post->image,'image/png'); @endphp"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...