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

Приветствие разработчиков, Я пытался создать одну базу данных для хранения изображений. Он хранит URL этого изображения и вставка работает нормально.

Теперь я хочу отобразить изображение, хранящееся в базе данных, но оно просто показывает значок изображения, а не отображает изображение. Изображение хранится в папке изображений внутри общей папки. Мне действительно нужна услуга. Заранее спасибо. Ниже я прилагаю свой код:

Контроллер форм:

public function store(Request $request)

    {

        $this->validate($request, [

                'filename' => 'required',
                'filename.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'

        ]);

        if($request->hasfile('filename'))
         {

            foreach($request->file('filename') as $image)
            {
                $name=$image->getClientOriginalName();
                $image->move(public_path().'/images/', $name);  
                $data[] = $name;  
            }
         }

         $form= new Form();
         $form->filename=json_encode($data);


        $form->save();

        return back()->with('success', 'Your images has been successfully');
    }
     public function show()
    {

        $users = DB::select('select * from forms');
        return view('display',['users'=>$users]);
    }

Вставить страницу

<form method="post" action="{{url('form')}}" enctype="multipart/form-data">
  {{csrf_field()}}

        <div class="input-group control-group increment" >
          <input type="file" name="filename[]" class="form-control">
          <div class="input-group-btn"> 
            <button class="btn btn-success" type="button"><i class="glyphicon glyphicon-plus"></i>Add</button>
          </div>
        </div>
        <div class="clone hide">
          <div class="control-group input-group" style="margin-top:10px">
            <input type="file" name="filename[]" class="form-control">
            <div class="input-group-btn"> 
              <button class="btn btn-danger" type="button"><i class="glyphicon glyphicon-remove"></i> Remove</button>
            </div>
          </div>
        </div>

        <button type="submit" class="btn btn-primary" style="margin-top:10px">Submit</button>

  </form>        
  </div>


<script type="text/javascript">


    $(document).ready(function() {

      $(".btn-success").click(function(){ 
          var html = $(".clone").html();
          $(".increment").after(html);
      });

      $("body").on("click",".btn-danger",function(){ 
          $(this).parents(".control-group").remove();
      });

    });

</script>

Показать страницу:

 @foreach ($users as $user)
<img src= url({{url('images/$user->filename')}});}/>
@endforeach

Ответы [ 3 ]

0 голосов
/ 05 ноября 2018

Вы храните несколько имен файлов как json в столбце имени файла в таблице форм. В шаблоне блейда вы вставляете json в img src вместо одного имени файла. Поскольку имена файлов хранятся как json, вам нужно декодировать json и запускать foreach для каждого имени файла.

@foreach ($users as $user)
    @php $filenames = json_decode($user->filename); @endphp
    @foreach ($filenames as $filename)    
        <img src="{{ url('images/' . $filename) }}"/>
    @endforeach
@endforeach
0 голосов
/ 05 ноября 2018

вы кодируете имена файлов в вашем контроллере, который является массивом, поэтому в своем шаблоне блейда вы должны сначала декодировать его, а затем пройти по нему через цикл foreach и показать его в теге img. Надеюсь, это поможет вам.

0 голосов
/ 05 ноября 2018

если его json так сделать

@foreach ($users as $user)
 @php $images = json_decode($user->filename,true); @endphp
   @foreach ($images as $image)
     <img src="{{ url('images/'.$image) }}"/>
   @endforeach
@endforeach
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...