Как отобразить изображение с помощью Laravel 5.8?

Я пытаюсь отобразить изображение, хранящееся в моем файле local. Эти загруженные файлы находятся в папке Storage

Как отобразить изображение с помощью Laravel 5.8?

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

@foreach($publications as $p)
    <div class = "card" style = "width: 18rem;">
        <img class = "card-img-top" src = "{{URL('public/storage/app/{$p->file_name}')}}" alt = "{{$p->file_name}}" />
      <div class = "card-body">
        <p class = "card-text">{{$p->description}}</p>
      </div>
    </div>
@endforeach

Но я получил:

Как отобразить изображение с помощью Laravel 5.8?

что случилось?

РЕДАКТИРОВАТЬ 1

Я использую php artisan storage:link, отображается консоль

The [public/storage] directory has been linked.

Но это все еще не работает

Возможно, вы забыли связать свою папку storage/app/public с папкой public. Попробуйте запустить php artisan storage:link

Levente Otta 23.06.2019 19:18

@LeventeOtta не работает, но отображается консоль The [public/storage] directory has been linked.

TuGordoBello 23.06.2019 19:21

Как выглядит ваша папка public? (По возможности добавьте скриншот)

Mateus Junges 23.06.2019 20:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
6 039
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Первый вам нужно сделать

php artisan storage:link

так что ваша папка хранения, к которой wepapp не может получить доступ, обычно связана с вашим общедоступным папку, чтобы ваше приложение могло получить доступ к изображениям, как будто они находятся в общей папке но он будет хранить их в папке хранилища, тогда вы должны поместить что-то вроде этого, чтобы отобразить изображение

я думаю, что это будет так

    <img src = "/storage/2/{{$p->file_name}}"/>

вы можете отредактировать путь к пути в вашем приложении, если этот путь не работает

надеюсь, это сработает с вами

Изменить, я поделюсь с вами примером из моего кода при миграции миграция пользователей

$table->string('image');

контроллер

$imageName = time().'.'.request()->image->getClientOriginalExtension();
        request()->image->move(public_path('userpicture'), $imageName);
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'image' => $imageName,
            'password' => Hash::make($data['password']),
        ]);

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

$imageName = time().'.'.request()->image->getClientOriginalExtension();
            request()->image->move(public_path('userpicture'), $imageName);

                'image' => $imageName,

как вы можете видеть, функция перемещения перемещает изображение в общую папку и помещает его в папку userpicture, а затем последняя строка сохраняет имя изображения в базе данных, чтобы я мог получить к нему доступ позже, чтобы отобразить изображение

и тогда я мог бы просто сделать это, чтобы отобразить изображение

<img class = "img-responsive img-rounded" src = "{{ asset('userpicture/1561335133.jpg') }}" alt = "User picture">

Я не храню файл в общедоступной папке, как вы можете видеть на первом изображении. Должен ли я хранить в этой папке?

TuGordoBello 25.06.2019 15:58

братан, у wepapp в laravel нет превлигий для доступа к папкам, таким как хранилище, и поэтому мы обычно связываем хранилище с общедоступным, потому что, если вы хотите, чтобы изображение было доступно, вы должны либо разместить его непосредственно в общедоступном, либо поместить его в хранилище, а затем связать его с общедоступная, потому что общедоступная папка, к которой wepapp может получить доступ и отображать свои файлы в вашем коде, вы пропустили этот момент и всегда помните, что файлы css файлы .js и изображения должны быть общедоступными или в хранилище со ссылкой на общедоступную v

RYOK 25.06.2019 16:27

я поделился с вами своим кодом, который я написал двумя днями ранее, и он отлично работает

RYOK 25.06.2019 23:04

php artisan storage:link создает символическую ссылку на /storage/app/public

Но похоже, что ваши файлы находятся в /storage/app/files попробуйте переместить файлы в общую папку.

вы можете использовать помощника по ресурсам, чтобы показать файл {{ asset("storage/{$p->file_name}") }}

Не работает <img class = "card-img-top" src = "{{ asset("storage/{$p->file_name}") }}" alt = "{{$p->file_name}}" />

TuGordoBello 24.06.2019 02:17

если вы используете {{ asset("storage/2/filename.txt") }}, файл должен находиться в /storage/app/public/2/filename.txt

Robbin Benard 24.06.2019 11:09

Другие вопросы по теме