Разница между хранением файлов в общедоступном каталоге и в хранилище в Laravel 5.4

В чем разница между хранением файлов (изображений) в папке public/images и их сохранением в storage/app/public?

Стоит ли изучать 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 и хотите разрабатывать...
17
0
6 549
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Если вы хотите контролировать, кто и к каким файлам имеет доступ, поместите файл в хранилище.

Если все могут получить доступ к файлу (включая пользователей, не вошедших в систему), сделайте общедоступным

public/images - это корневой веб-каталог. Это означает, что к нему можно получить доступ через веб-браузер mozilla, chrome, etc....

storage/app/public - это папка для cache, logs.

Где разместить мои файлы?

Практическое правило: если вам нужно контролировать, кто может просматривать эти файлы, поместите их в storage/app/public, в противном случае поместите их в public/images.

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

Как указывали другие ответы, каталог веб-корневого каталога public может видеть любой пользователь. Даже незарегистрированные пользователи

Аналогичный вопрос был задан здесь и получил ответ:

public is a "WEBROOT" directory. it consists of files which can be accessed from a browser. There is your index.php file, which take a role of your enter point. Also your css, javascript files there.

storage is a folder for cache, logs etc.

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

Общая папка означает, что файлы будут общедоступными. Например, изображение, хранящееся в public/images/my-image.jpeg, может быть просмотрено кем угодно, перейдя в

mysite.com/images/my-image.jpeg

Однако файлы, хранящиеся в каталоге storage, доступны только вашему приложению.

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

Причина этого в том, что ваш storage может быть не вашей локальной файловой системой, а скорее корзиной Amazon S3 или Rackspace CDN (или чем-то еще).

Вам нужно будет настроить конфигурации файловой системы, следуя документации https://laravel.com/docs/5.6/filesystem

Как только это будет сделано, вы можете загружать / хранить файлы в / из места хранения, а не иметь все на своем сервере.

Для public и storage есть 2 вспомогательных метода для отображения файлов:

хранение: storage_path('my-file.jpg')

общедоступный: asset('my-file.jpg')

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