отображать изображения из базы данных в лезвие в laravel - PullRequest
0 голосов
/ 05 мая 2020

У меня есть база данных, где изображения хранятся в строке таблицы, например, это имя (строка) «имя» sometext (строка) «некоторое описание» имена файлов (строка) image1.jpeg | image2.jpeg

image1 и image2 хранятся в папке "public / storage / image" \ изображения сохраняются в папке

    public function store(Request $request)
    {

$data = request()->validate([
            'name' => 'required',
            'sometext' => '',
            'testImages' => '',
            'testImages' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        ]);
  $images=array();
        if($files=$request->file('testImages')){
            foreach($files as $file){
                $name=$file->getClientOriginalName();
                $file->move('image',$name);
                $images[]=$name;
            }
        }

auth()->user()->tests()->create([
            'name' => $data['name'],
            'sometext' => $data['sometext'],
            'filenames' => implode("|",$images),
        ]);
}

 public function show ($id)
    {
        $tests = Tests::findorfail($id);  //get row data from table with ID
        return view('test.show-report', compact('tests')); //returing data to blade
    }

В лезвии я могу сделать $ tests-> name и $ tests-> description для получения данных успешно .. Я не могу понять, как отображать изображения из колонки "имена файлов".

Ответы [ 5 ]

0 голосов
/ 05 мая 2020

Можно так:

@foreach(explode('|',$tests->filenames) as $fileName)
    <img src="/storage/image/{{$fileName}}"/>
@endforeach
0 голосов
/ 05 мая 2020

Используйте вот так

<img src="{{ url('') }}/storage/image/{{$tests-> filenames}}">
0 голосов
/ 05 мая 2020

Если имена изображений правильно хранятся в базе данных с правильным расширением, вот что вам понадобится в вашем представлении лезвия:

  <img src="/storage/image/{{$tests->NAME_OF_COLUMN_IN_DB}}" />

просто замените «NAME_OF_COLUMN_IN_DB» на имя столбца, в котором вы сохранить имя изображения в своей базе данных.

0 голосов
/ 05 мая 2020

Вы можете выполнить процедуру ниже

<img src="{{ public_path('storage\image') }}{{ $tests->filenames }}" alt=""/>

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

$img = exploade('|', $tests->filenames);
dump($img);
0 голосов
/ 05 мая 2020

попробуйте вот так <img src="/storage/image/{{ $tests['filenames'] }}" height="30px" width="30px" /> надеюсь, что это поможет: В этом случае: в контроллере используйте explode (), чтобы $ tests-> имена файлов создают массив, а затем l oop это как это

@foreach(json_decode($tests->filenames, true) as $images)
     <img src="/storage/image/{{ $images }}" height="30px" width="30px" />
@endforeach
...