php 如何获取存储在storage/app/中的文件?

tkclm6bt  于 2022-11-21  发布在  PHP
关注(0)|答案(2)|浏览(268)

我一直在尝试将一个文件存储到storage/app/(并从storage/app/获取),遵循doc。
运行php artisan storage:link后,可以看到有一个指向puiblic文件夹的链接。

如果我用下面的代码放一个文件...

Storage::put('/images/blah.png', $file);

...存储将如下所示。

我真的不确定链接是否工作正常,因为这个blah.png无法检索。
到目前为止,我已经将storage的访问级别更改为chmod -R 755 storage/,并输入完整的URL(http://localhost:8000/storage/images/blah.png。这是asset('storage/images/blah.png')返回的内容)。但是,我仍然收到404错误(未找到)。
config/filessystems.php中,默认值设置为local。(即'default' => 'local'
你看出我做错了什么吗?
如有任何建议,我们将不胜感激。

附言

以下是公用磁盘的配置...

'public' => [
        'driver'     => 'local',
        'root'       => storage_path('app/public'),
        'url'        => env('APP_URL') . '/storage',
        'visibility' => 'public',
],
 //env('APP_URL').'/storage' returns 'root/storage/app/public'
ikfrs5lh

ikfrs5lh1#

公用磁盘用于存放将公开访问的文件。默认情况下,公用磁盘使用本地驱动程序并将这些文件存储在storage/app/public中。要使这些文件可从Web访问,您应该创建一个从public/storage到storage/app/public的符号链接。
要创建从public/storage到storage/app/public的符号链接,请转到根文件夹:

ln -s storage/app/public public/storage

然后,您可以将文件保存到storage/app/public:

Storage::put('/public/images/blah.png', $file);
// the blah.png is located at storage/app/public/images/blah.png
// you can also get the file path by
// $image_path = storage_path() . "/app/public/images/blah.png";

然后,您可以使用以下方式访问图像文件:

http://{domain}/storage/images/blah.png
edqdpe6u

edqdpe6u2#

在控制器中

Storage::disk('images')->get('firmas.jpg');

和文件config/filesystems.php中的文件名

'default' => env('FILESYSTEM_DRIVER', 'local'),

并且该盘

'disks' => [

    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
    ],

    'images' => [ // used for Backpack/CRUD (in elFinder)
        'driver' => 'local',
        'root'   => storage_path('app/pdfs'),
    ],

    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],

    's3' => [
        'driver' => 's3',
        'key' => env('AWS_KEY'),
        'secret' => env('AWS_SECRET'),
        'region' => env('AWS_REGION'),
        'bucket' => env('AWS_BUCKET'),
    ],

]

相关问题