Laravel GLOB公共路径

时间:2015-06-17 08:06:39

标签: laravel path glob

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

    $images = [];

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

如果我使用此函数它不返回任何内容,我也尝试使用public_path()但返回完整路径,包括我的F:// dir。

2 个答案:

答案 0 :(得分:2)

Laravel glob function返回一个数组,其中包含找到的文件的绝对路径。请记住,you need to pass the absolute path in the argument too很重要。

在您的情况下,由于要在公用文件夹中查找文件,因此可以使用@Marcin Orlowski建议的public_path()帮助程序来获取所需的绝对路径;如果您要在其他位置搜索,可以使用其他帮助程序。

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

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

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

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

使用array map代替foreach:

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

注意:Laravel Glob是PHP glob() function的包装。

答案 1 :(得分:0)

  

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

它是manual reads

  

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

     

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

     

public_path()
  获取完全合格的路径给公众   。目录

     

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

HWND

我怀疑你的公共目录是否在你的根文件夹中,这就是你所使用的absolute path指向的内容,因此使用'/public/img/uploads/*.*' 返回的内容 - 更确切地说,没有什么可以打扰它是完全限定的路径。