在 Laravel 中,我想从目录获取所有图像,我只是在获取公共文件夹的路径时遇到问题。
$images = [];
foreach(File::glob('/public/img/uploads/*.*') as $filename) {
$images[] = $filename;
}
如果我使用此函数,它不会返回任何内容,我也尝试使用
public_path()
但这会返回包括我的 F:// 目录的完整路径。
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() 函数的包装器。