Невозможно получить изображение из каталога хранилища в laravel - PullRequest
0 голосов
/ 01 июня 2018

Изображение не отображается, когда я отображаю его на странице указателя.

Мой файл просмотра (index.blade.php):

<div class="row">
    @if(App\News::count() > 0)
      @foreach($news as $n)
        <div class="col-md-8 panel border-right">
          <br />
          <img src="{{ asset('storage/images/news/'. $n->image) }}" width="200px" height="100px">
 --$n->image returns News_1.jpg which is the image name stored in the storage directory.
          <h1>First Div</h1>
        </div>
      @endforeach
   @endif
       <div class="col-md-4">
         <h1>Second Div</h1>
       </div>
</div>  

Мой контроллер:

    public function store(Request $request)
{

    $this->validate($request, 
    [

        'head' => 'required|max:191',
        'title' => 'required|max:191',
        'body' => 'required',
        'pic' => 'required'

    ]);
    $filename="";
    $extension="";

    if($request->hasFile('pic'))
    {

        if((News::orderBy('id', 'desc')->first()) != null)
        {
            $id = ((News::orderBy('id', 'desc')->first()->id)+1);
            $filename = "News_" . $id;
        }
        else
        {
            $filename = "News_" . 1;
        }
        $extension = $request->pic->getClientOriginalExtension();
        $filename = $filename . "." . $extension;

        //return $request->pic->getClientOriginalName();
        $request->pic->storeAs('public/images/news', $filename);


    }
    else
    {
        return redirect()->back()->withInput(Input::all())->withErrors(['message' => 'Please select a valid file.']);
    }

    $news = new News;
    $news->head = $request->head;
    $news->title = $request->title;
    $news->body = $request->body;
    $news->image = $filename;

    $news->save();

    Session::flash('success', 'The record was successfully saved.');

    return redirect()->route('news.index');


}  

Я уже связал каталог хранилища с публичным каталогом:
storage_link

Моя структура каталогов:
directory_structure

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

При открытии изображения в новой вкладке я вижу следующееадресная строка:
address

Это локальная конфигурация драйвера:

local diriver

ЛюбойПомощь приветствуется заранее.

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Вы можете попробовать установить локальный драйвер на что-то вроде этого:

'public' => [
    'driver' => 'local',
    'root' => storage_path('app/public'),
    'url' => env('APP_URL').'/storage',
    'visibility' => 'public',
],
0 голосов
/ 01 июня 2018

Если ваш текущий маршрут - / крикет, и вы ссылаетесь на изображение с помощью 'storage / images / news / news1.jpg', то веб-браузер предполагает, что это изображение относится к ресурсу крикета.

Ваше изображение src должно начинаться либо с полного URL-адреса, либо с /, чтобы указать, что оно относится к корневой папке

В этом случае я бы жестко закодировал URL-адрес, поскольку вы жестко закодировали его в активе.помощник в любом случае

<img src="/storage/images/news/{{ $n->image }}" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...