从 laravel 8 中的视图访问后端存储
access backend storage from the view in laravel 8
我正在尝试为个人项目创建一个仪表板,
我希望Dashboard的存储与前端完全分开,
我在 filesystem.php 中创建了一个新磁盘,这是详细信息:
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
'backend' => [
'driver' => 'local',
'root' => storage_path('app/backend'),
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
],
],
在那之后,我尝试存储一些头像并且效果很好,
我的问题是当我想从视图端访问文件时,
请注意,我在 public 和 private 上都尝试了可见性
,还
我想在里面存放敏感文件
所以我尝试:
url('/storage/avatars/filename.png'),
storage_path('backend/avatars/filename.png'),
storage::disk('backend')->get('avatars/filename.png'),
但什么都没有。
你的问题到底是什么?我假设您正尝试在网页上显示图片,但它们没有显示?
这与文件的可见性有关。只有 storage/app/public
目录中的文件可以显示。因此,应该使用 URL 可见的图像应该存储在该目录中。
此处的最佳做法是将图像上传到 Public disk。确保使用 php artisan storage:link
.
创建符号 link
对于任何其他非public文件,您可以将控制器设置为return download response
另一种选择是立即在浏览器中显示内容,例如 PDF。在这种情况下,您应该在 return 响应时设置正确的 Content-Type
,其中包含 PDF 的内容。
如果这没有回答您的问题,请告诉我。
我正在尝试为个人项目创建一个仪表板, 我希望Dashboard的存储与前端完全分开, 我在 filesystem.php 中创建了一个新磁盘,这是详细信息:
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
'backend' => [
'driver' => 'local',
'root' => storage_path('app/backend'),
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
],
],
在那之后,我尝试存储一些头像并且效果很好, 我的问题是当我想从视图端访问文件时,
请注意,我在 public 和 private 上都尝试了可见性 ,还 我想在里面存放敏感文件 所以我尝试:
url('/storage/avatars/filename.png'),
storage_path('backend/avatars/filename.png'),
storage::disk('backend')->get('avatars/filename.png'),
但什么都没有。
你的问题到底是什么?我假设您正尝试在网页上显示图片,但它们没有显示?
这与文件的可见性有关。只有 storage/app/public
目录中的文件可以显示。因此,应该使用 URL 可见的图像应该存储在该目录中。
此处的最佳做法是将图像上传到 Public disk。确保使用 php artisan storage:link
.
对于任何其他非public文件,您可以将控制器设置为return download response
另一种选择是立即在浏览器中显示内容,例如 PDF。在这种情况下,您应该在 return 响应时设置正确的 Content-Type
,其中包含 PDF 的内容。
如果这没有回答您的问题,请告诉我。