Laravel - изображение, сохраненное в папке хранилища, не отображается пользователю

У меня есть этот код для сохранения изображения в папке storage / app / uploads

 $image_main = Image::where('property_id', $id)->get();

$file = $request->file('file');
      $destinationPath = 'uploads';
      $i = 0;
      foreach ($file as $file1) {
          $i++;
          $extension = $file1->getClientOriginalExtension();
          $path = $file1->storeAs(
              $destinationPath, $i.time().".".$extension
          );

Это мой файл с лезвием

@foreach ($image_main as $images)
        <img src = "{{"/storage/app/".$images->filename}}

Файл сохраняется в папке storage / app / uploads, но он не отображается пользователю, в нем говорится, что файл не найден. я должен установить что-нибудь в файле filesystems.php

Если вы используете публичное хранилище или хранилище S3, вы можете использовать <img src = "{{Storage::url("/storage/app/".$images->filename)}} />

apokryfos 17.05.2018 17:42

Я использую папку для хранения

Adokiye Iruene 17.05.2018 17:43

Хранилище не является общедоступным, поэтому веб-сервер не может его обслуживать

apokryfos 17.05.2018 17:48

Хорошо, так какое решение

Adokiye Iruene 17.05.2018 17:49

где мне сохранить файл

Adokiye Iruene 17.05.2018 17:49

Вы должны хранить его в общей папке

Rob 17.05.2018 17:50

Как мне это сделать, @Rob

Adokiye Iruene 17.05.2018 17:54
laravel.com/docs/5.6/filesystem#the-public-disk
apokryfos 17.05.2018 18:03
Стоит ли изучать 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 и хотите разрабатывать...
6
8
27 849
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ваша папка хранения недоступна для пользователя.

Необходимо пройти методом Хранилище :: url ():

Storage::url("/storage/app/{$images->filename}")

В виде:

<img src = "{{ Storage::url("/storage/app/{$images->filename}") }}" alt = "{{ $images->filename }}" />

https://laravel.com/docs/master/filesystem#retrieving-files

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

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

<img src = "{{ public_path('images/image-name.png')}}" alt = "" />

Как сохранить их в общей папке

Adokiye Iruene 17.05.2018 17:55

измените переменную $ destinationPath на это - $ destinationPath = '../images/'; Убедитесь, что у вас есть папка с изображениями в общей папке и она доступна для записи.

Iyathurai Iyngaran 17.05.2018 18:01
Ответ принят как подходящий

Файловая система хранения Laravel настолько уникальна. Когда вы делаете какую-либо загрузку, она будет загружена в каталог storage/app/public. Чтобы сделать его доступным в каталоге public, необходимо создать символическую ссылку с помощью команды запуска:

php artisan storage:link

Эта команда привяжет storage/app/public к public/storage.

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

Надеюсь, поможет.

Если вы используете homestead в качестве среды на Mac, вам необходимо выполнить следующие действия:

  1. Удалите вашу общедоступную папку / папку для хранения (если есть)
  2. Следуй этим шагам:

    1. ssh в вашу усадьбу, используя команду ниже
    2. cd ~homestead
    3. vagrant up
    4. vagrant ssh
    5. cd Code/PATH_TO_YOUR_APP_ROOT_DIR
    6. php artisan storage:link
  3. Доступ к образу, подобному этому {{ asset('storage/img/myimage.jpg') }}

вы добавили эту строку в свой файл .env

FILESYSTEM_DRIVER = public

после этого вам нужно запустить эту команду в своем терминале

php artisan storage:link

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

                <img src = "{{ asset('storage/'.$post->image) }}" width = "120px" hight = "120px" alt = "">

Да, очень важно добавить FILESYSTEM_DRIVER = public, если этот код фрагмента отсутствует, изображения не появятся ...

Malith Senanayake 20.04.2021 12:44

Попробуйте этот метод, он будет работать на 100%.

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

Загляните в общую папку, где хранятся все ваши изображения, и в src укажите имена этих папок и, наконец, свое имя изображения из базы данных.

Пример :

<img src = "/images/posts/{{$post->featured_image}}">

ИЛИ ЖЕ

Пример: полный путь для отображения изображения с использованием ссылки в браузере

<img src = "{{asset('/images/posts/'.$post->featured_image)}}">

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