从 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 的内容。

如果这没有回答您的问题,请告诉我。