Laravel 5.4 не может получить доступ к ресурсу img в общедоступной подпапке символической ссылки

Я создал подпапку для каждого пользователя на локальном диске с помощью этой команды:

if(! Storage::disk('public')->has("users/".$username."_".Auth::user()->id)){
    Storage::makeDirectory("public/users/".$username."_".Auth::user()->id);

и это работает!

Итак, теперь, когда я сохраняю файл, все идет в папку пользователя, то есть в:

storage/app/public/users/userX
storage/app/public/users/userY
etc.

Потом строю сим линк командой: php aritsan storage:link И работает.

Но когда я пытаюсь обслуживать файлы, мне всегда нечего обслуживать! Если я использую код вроде:

Storage::url("$urlToFile");

где $urlToFile содержит что-то вроде "public/users/userX/file.png"

это возвращает мне:

/storage/users/userX/file.png

и я не могу использовать его, даже если поставлю функцию типа assett() впереди!

как я могу это решить?

Заранее спасибо!


person neo87    schedule 06.09.2017    source источник
comment
ты пробовал: Storage::disk('local')->url($url); ?   -  person Sletheren    schedule 06.09.2017
comment
Какую среду разработки вы используете? Это Хоумстед?   -  person chanafdo    schedule 06.09.2017
comment
@chanafdo не использую встроенный сервер на локальном компьютере, файлы хранятся правильно   -  person JahStation    schedule 06.09.2017


Ответы (3)


Вы должны установить URL в config/filesystem.php

'public' => [
    'driver' => 'local',
    'root' => storage_path('app/public'),
    'url' => env('APP_URL').'/storage',
    'visibility' => 'public',
],
person Jithin Jose    schedule 06.09.2017
comment
от моей предыдущей конфигурации единственным отличием является строка о «url», которая теперь добавлена, но без какого-либо результата! - person JahStation; 06.09.2017
comment
Установлен ли APP_URL в .env? - person Jithin Jose; 06.09.2017
comment
да, я пробовал с номером порта и без него - is localhost:8000- - person JahStation; 06.09.2017

Вы можете сделать это Storage::disk('public')->get($url);

person Sletheren    schedule 06.09.2017
comment
Я работаю над той же проблемой: с помощью этих команд я получаю 2 типа результата или пустую строку, если я добавляю общедоступность в URL-адрес, ИЛИ страницу со странными символами, если я пытаюсь без общедоступности в URL-адресе... все еще не работает! - person JahStation; 06.09.2017

Согласно документам, вы должны получать доступ к своим изображениям следующим образом: asset('storage/users/userX/file.png');, а не public/users/userX/file.png, как вы используют.

person Don't Panic    schedule 06.09.2017
comment
src=localhost:8000/users/userX/file.png, сгенерированный обоими активами ( ) или Storage::disk('local')-›url($url) не работает! - person JahStation; 06.09.2017
comment
@JahStation Что именно вы передаете asset()? - person Don't Panic; 06.09.2017
comment
хранилище/пользователи/USERX/FILEX.PNG - person JahStation; 06.09.2017
comment
Странно, у меня это работает, я получаю http://localhost/storage/users/userX/file.png - person Don't Panic; 06.09.2017
comment
у меня тоже есть номер порта на локальном хосте! может быть в этом проблема? - person JahStation; 06.09.2017