如何在 Laravel 中显示来自另一个磁盘的图像
How to display image from another disk in Laravel
我正在尝试在我的 Laravel 应用程序中显示图像。该图像来自另一个磁盘,该磁盘是 samba 共享。我遵循了 Laravel 文档中的配置说明,这是我的设置:
filesystems.php
'shop_storage' => [
'driver' => 'local',
'root' => env('SHOP_STORAGE_PATH', base_path('shop_storage')),
'dir' => [
'public' => 0777,
'private' => 0777,
]
],
我的 samba 共享使用以下命令安装到我的 Laravel 应用程序内的根文件夹 /shop_storage 中:
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 共享的符号链接。如果我单击打开它,我会看到所有文件。我要查找的文件存在。
问题是当我试图在我的网页中显示它时,请求 return 出现了 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')}}">
我做错了什么?
编辑
在一些 try/error 之后,我设法使用以下语法获得不同的响应:
<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,这是什么原因造成的?
为了完成这项工作,我最终所做的是将我的共享直接挂载到 public/storage 而不是使用符号链接。然后我可以使用 laravel 资产助手访问该文件:
<img src="{{asset('storage/products/16/MAZJKj59EY0XQ57oKIibKr33eZ5dsqAPx44MCHHJ.png')}}">
我正在尝试在我的 Laravel 应用程序中显示图像。该图像来自另一个磁盘,该磁盘是 samba 共享。我遵循了 Laravel 文档中的配置说明,这是我的设置:
filesystems.php
'shop_storage' => [
'driver' => 'local',
'root' => env('SHOP_STORAGE_PATH', base_path('shop_storage')),
'dir' => [
'public' => 0777,
'private' => 0777,
]
],
我的 samba 共享使用以下命令安装到我的 Laravel 应用程序内的根文件夹 /shop_storage 中:
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 共享的符号链接。如果我单击打开它,我会看到所有文件。我要查找的文件存在。
问题是当我试图在我的网页中显示它时,请求 return 出现了 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')}}">
我做错了什么?
编辑
在一些 try/error 之后,我设法使用以下语法获得不同的响应:
<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,这是什么原因造成的?
为了完成这项工作,我最终所做的是将我的共享直接挂载到 public/storage 而不是使用符号链接。然后我可以使用 laravel 资产助手访问该文件:
<img src="{{asset('storage/products/16/MAZJKj59EY0XQ57oKIibKr33eZ5dsqAPx44MCHHJ.png')}}">