У Laravel проблемы с отображением загруженных изображений

Я пытаюсь создать простую систему загрузки файлов для изображений, и даже после нескольких часов поиска в Google я просто не могу заставить ее работать. Пользователи загружают изображения на мой веб-сайт, я сохраняю путь к изображению в базе данных, а затем показываю изображения, делая путь к базе данных src тега img. Вроде достаточно просто, но у меня все равно не работает. Во всяком случае, вот мой код.

//posting upload in controller
//i named images docs

public function postUpload(){

    Input::file('file')->move(base_path() . '/public/uploads');

    $doc = new Doc();
    $doc->title = Input::get('title');
    $doc->caption = Input::get('caption');
    $doc->path = base_path() . '/public/uploads' . Input::file('file')->getClientOriginalName();

    $doc->save();

}

А вот мой индексный просмотр, в котором я показываю загруженные изображения:

@extends('layouts.caselistlayout');

@section('content')


@foreach($docs as $doc)
<h1>{{ $doc->title }}</h1>
<h2>{{ $doc->caption}}</h2>
<img src='{{ $doc->path }}'>

@endforeach

@stop

Я могу предоставить код для своего представления загрузки, но я не думаю, что он нужен в данной ситуации.

Спасибо за помощь!

Изменить: забыл упомянуть, что точная проблема в том, что изображения не отображаются. Заголовок и заголовок отображаются на странице индекса, но изображение не отображается. Я вижу только местозаполнитель HTML по умолчанию для того места, где должно быть изображение.

Изменить 2: файл попадает в папку, и я вижу URL-адрес в столбце пути базы данных.


person codeforfood    schedule 05.06.2014    source источник
comment
Произошла ошибка или файл вообще попадает в папку?   -  person Ali Gajani    schedule 05.06.2014
comment
Я могу видеть и просматривать файл в папке public / uploads. Я внес правку, потому что забыл указать, в чем именно заключалась проблема.   -  person codeforfood    schedule 05.06.2014
comment
Я вижу, а вы видите, что URL-адрес попадает в записи?   -  person Ali Gajani    schedule 05.06.2014
comment
Да, путь загружен в столбец пути таблицы.   -  person codeforfood    schedule 05.06.2014
comment
Тогда измените свой вопрос, потому что файл действительно загружается.   -  person Ali Gajani    schedule 05.06.2014
comment
Сделаю, извините за неясность.   -  person codeforfood    schedule 05.06.2014


Ответы (1)


Вы сохраняете полный физический путь к базе данных, которая вызывает проблему. Вам действительно нужен http адрес. Пример:

http://example.com/uploads/img1.jpg

Удалите следующую строку:

  $doc->path = base_path() . '/public/uploads' . Input::file('file')->getClientOriginalName();

Вместо этого сохраните следующее:

  $doc->path = 'uploads/' . Input::file('file')->getClientOriginalName();

и с вашей точки зрения:

<img src='{{ asset($doc->path) }}'>

person Anam    schedule 05.06.2014
comment
Спасибо за ответ, но у меня он все еще не работает. Я внес изменения, но изображение по-прежнему не отображается. Изображение загружается в базу данных по пути uploads / image.png. Кроме того, image.png существует в папке public / uploads. Тег img просто не отображает картинку. - person codeforfood; 06.06.2014