在 Laravel 中,我想从目录中获取所有图像,但在获取公共文件夹的路径时遇到问题。
$images = [];
foreach(File::glob('/public/img/uploads/*.*') as $filename) {
$images[] = $filename;
}
Run Code Online (Sandbox Code Playgroud)
如果我使用这个函数它什么都不返回,我也尝试使用public_path()但它返回包括我的 F:// 目录的完整路径。
小智 5
Laravel glob 函数返回一个数组,其中包含它找到的文件的绝对路径。重要的是要记住,您也需要在参数中传递绝对路径。
在您的情况下,由于您想在公共文件夹中查找文件,您可以按照@Marcin Orlowski 的建议使用public_path()助手来获取所需的绝对路径;如果您想在不同的位置进行搜索,可以使用其他助手。
因此,在代码中调用 glob 的正确方法是以下行:
$images = File::glob(public_path() . '/img/uploads/*.*');
Run Code Online (Sandbox Code Playgroud)
但是,您可能不需要绝对路径,只需要相对于公用文件夹的路径。在这种情况下,您可以使用basename 函数来摆脱绝对路径并添加您想要的路径部分:
$images = [];
foreach (File::glob(public_path() . '/img/uploads/*.*') as $filename) {
$images[] = '/img/uploads/' . basename($filename);
}
Run Code Online (Sandbox Code Playgroud)
使用数组映射而不是 foreach:
$images = array_map(function($filename) {
return '/img/uploads/' . basename($filename);
}, File::glob(public_path() . '/img/uploads/*.*'));
Run Code Online (Sandbox Code Playgroud)
注意:Laravel Glob 是PHP glob() 函数的包装器。
| 归档时间: |
|
| 查看次数: |
5217 次 |
| 最近记录: |