





Если вы хотите контролировать, кто и к каким файлам имеет доступ, поместите файл в хранилище.
Если все могут получить доступ к файлу (включая пользователей, не вошедших в систему), сделайте общедоступным
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.phpfile, which take a role of your enter point. Also yourcss,javascriptfiles there.
storageis 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')