Как отобразить изображение с другого диска в Laravel

Я пытаюсь отобразить изображение в своем приложении Laravel. Изображение поступает с другого диска, который является общим ресурсом Samba. Я следовал инструкциям по настройке из Laravel Doc, вот моя настройка:

файловые системы.php

'shop_storage' => [
    'driver' => 'local',
    'root' => env('SHOP_STORAGE_PATH', base_path('shop_storage')),
    'dir' => [
        'public' => 0777,
        'private' => 0777,
    ]
],

Мой общий ресурс samba монтируется в корневую папку /shop_storage внутри моего приложения Laravel с помощью следующей команды: sudo mount.cifs //PATH_TO_FILE_SHARE/ARMMAG ./shop_storage -o credentials=$HOME/.smbcredentials,rw,file_mode=0777,dir_mode=0777,mfsymlinks

Я правильно вижу все файлы, когда открываю папку. Затем я добавил символическую ссылку с /public/storage на /shop_storage с помощью следующей команды: sudo ln -s /shop_storage /public/storage (используя полный путь, начинающийся с /home, удаленный здесь для конфиденциальности) Когда я открываю /public/storage, я правильно вижу символическую ссылку, указывающую на общий ресурс samba. Если я нажму, чтобы открыть его, я увижу все файлы. Файл, который я ищу, существует.

структура каталогов

Проблема в том, что когда я пытаюсь отобразить его на своей веб-странице, запрос возвращает 404. Вот некоторые из вещей, которые я пробовал:

<img src="{{\Storage::disk('shop_storage')->url('products/16/MAZJKj59EY0XQ57oKIibKr33eZ5dsqAPx44MCHHJ.png')}}">
<img src="http://localhost:8000/shop_storage/products/16/MAZJKj59EY0XQ57oKIibKr33eZ5dsqAPx44MCHHJ.png">
<img src="{{asset('products/16/MAZJKj59EY0XQ57oKIibKr33eZ5dsqAPx44MCHHJ.png')}}">
<img src="{{asset('storage/products/16/MAZJKj59EY0XQ57oKIibKr33eZ5dsqAPx44MCHHJ.png')}}">

Что я делаю не так?

Изменить После некоторых попыток/ошибок мне удалось получить другой ответ со следующим синтаксисом: <img src="{{asset('storage/shop_storage/products/16/MAZJKj59EY0XQ57oKIibKr33eZ5dsqAPx44MCHHJ.png')}}"> Теперь я получаю следующую ошибку

You don't have permission to access /storage/shop_storage/products/16/MAZJKj59EY0XQ57oKIibKr33eZ5dsqAPx44MCHHJ.png on this server.

Мое разрешение установлено на 777, что может быть причиной?


person naghal    schedule 14.09.2020    source источник
comment
laravel-guide.readthedocs.io/en/latest/filesystem / Remember, if you are using the local driver, all files that should be publicly accessible should be placed in the storage/app/public directory. Furthermore, you should create a symbolic link at public/storage which points to the storage/app/public directory.   -  person floGalen    schedule 14.09.2020
comment
{{ HTML::image('img/stuvi-logo.png', 'alt text', array('class' => 'css-class')) }} видно здесь: stackoverflow.com/questions/29858097/laravel-blade- html-изображение   -  person floGalen    schedule 14.09.2020
comment
Не думаю, что это решение моей проблемы. Я не хочу хранить свои файлы в хранилище/приложении/общедоступном, как указано, я хочу, чтобы они были на моем общем ресурсе samba. Вот почему я создал символическую ссылку, которая указывает туда вместо хранилища/приложения/общедоступного.   -  person naghal    schedule 14.09.2020
comment
stackoverflow.com/questions/30191330/   -  person floGalen    schedule 14.09.2020


Ответы (1)


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

<img src="{{asset('storage/products/16/MAZJKj59EY0XQ57oKIibKr33eZ5dsqAPx44MCHHJ.png')}}">

person naghal    schedule 14.09.2020