Laravel GLOB 公共路径

问题描述 投票:0回答:2

在 Laravel 中,我想从目录获取所有图像,我只是在获取公共文件夹的路径时遇到问题。

    $images = [];

    foreach(File::glob('/public/img/uploads/*.*') as $filename) {
        $images[] = $filename;
    }

如果我使用此函数,它不会返回任何内容,我也尝试使用

public_path()
但这会返回包括我的 F:// 目录的完整路径。

php laravel path glob
2个回答
6
投票

Laravel glob 函数 返回一个数组,其中包含找到的文件的绝对路径。请务必记住,您也需要在参数中传递绝对路径

在您的情况下,由于您想在公共文件夹中查找文件,因此您可以按照@Marcin Orlowski的建议使用 public_path() 帮助器来获取所需的绝对路径;如果您想在不同位置进行搜索,可以使用其他助手。

因此,在代码中调用 glob 的正确方法是下面的行:

$images = File::glob(public_path() . '/img/uploads/*.*');

但是,您可能不需要绝对路径,而只需要相对于公用文件夹的路径。在这种情况下,您可以使用 basename 函数 去掉绝对路径并添加您想要的路径部分:

$images = [];
foreach (File::glob(public_path() . '/img/uploads/*.*') as $filename) {
    $images[] = '/img/uploads/' . basename($filename);
}

数组映射代替foreach:

$images = array_map(function($filename) {
    return '/img/uploads/' . basename($filename);
}, File::glob(public_path() . '/img/uploads/*.*'));

注意:Laravel Glob 是 PHP glob() 函数的包装器。


0
投票

我只是在获取公用文件夹的路径时遇到问题。我还尝试使用 public_path() 但返回完整路径,包括我的 F:// 目录。

它按照手动读取

base_path()
获取根目录的完全限定路径 应用程序安装。

config_path()
获取配置的完全限定路径 目录。

公共路径()
向公众提供完全合格的路径 目录。

存储路径()
获取存储的完全限定路径 目录。

'/public/img/uploads/*.*'

我怀疑你的公共目录是否在你的根文件夹中,这就是你使用的绝对路径所指向的,所以使用

public_path()
返回的内容 - 它是完全合格的路径,这没什么可打扰的。

© www.soinside.com 2019 - 2024. All rights reserved.