获取位于 storage/folder 目录而不是 storage/app/directory 的 Laravel Storage 文件

Posted

技术标签:

【中文标题】获取位于 storage/folder 目录而不是 storage/app/directory 的 Laravel Storage 文件【英文标题】:Fetch Laravel Storage files that are in the storage/folder directory not in storage/app/directory 【发布时间】:2021-04-07 20:57:56 【问题描述】:

我正在尝试从我的 laravel 6 应用程序的目录 /storage/certs/certexample.pem 中提取一个证书文件。

每当我尝试运行命令时:

Storage::get('storage/certs/certexample.pem'))

或使用

storage_path('certs')

要获取完整路径,我得到了错误:

League\Flysystem\FileNotFoundException: File not found at path:

该文件确实存在,我可以在终端上找到它,所以一定有我遗漏的东西。

我的文件系统配置如下所示:

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

我尝试添加另一个名为“certs”的磁盘,该磁盘设置了 storage_path('certs') 但这似乎没有帮助。

由于文件只放置在服务器上并且应用程序没有写入它,因此我不需要使用存储来写入文件,正如我在文档中看到的那样。有没有办法以这种方式提取 certsexample.pem 文件(或类似文件),还是我缺少 Laravel 的存储功能?

更新: 在尝试获取要在 storage/app 之外访问的文件夹但没有成功后,我最终使用了 sotrage/app/certs 目录并使用 storage_path('app/certs') 访问它。

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。我更新了 config/filesystems.php 中的配置文件,并在 /storage 中添加了我的文件夹:

'disks' => [

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

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

    //my custom directory in storage folder
    'orders' => [
        'driver' => 'local',
        'root' => storage_path('egrn/orders'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],
    //...default config code

    ],

我得到了这样的文件:

$storage = Storage::disk('orders')
->get('/kv66cba66ca6cf667995888bf12cc4d25d.xml');

完整路径是/storage/egrn/orders/kv66cba66ca6cf667995888bf12cc4d25d.xml

【讨论】:

以上是关于获取位于 storage/folder 目录而不是 storage/app/directory 的 Laravel Storage 文件的主要内容,如果未能解决你的问题,请参考以下文章

在android中获取HTML响应而不是JSON

在 localhost/phpmyadmin 中获取目录列表而不是登录菜单

创建一个没有位于其中的原始目录的 Zip

任何获取目录名而不是日志文件名的日志查看器[关闭]

Azure Blob 存储从特定目录而不是容器获取文件列表

如何获取所有文件中出现的单词?但是每个目录的单词计数而不是单个数字