答案 0 :(得分:3)
您可以在一行中完成此操作:
use File;
$files = File::files(public_path());
// If you would like to retrieve a list of
// all files within a given directory including all sub-directories
$files = File::allFiles(public_path());
有关更多信息,请检查documentation。
编辑:文档令人困惑。看来,您需要改用File
Facade。我将进行更多调查,但现在似乎可以正常工作。
此外,结果将是SplFileInfo个对象的数组。
答案 1 :(得分:0)
解决了!我已经使用了此功能,并且可以正常工作:
// GET PUBLIC FOLDER FILES (NAME)
if ($handle = opendir(public_path('img'))) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
echo $entry."<br>"; // NAME OF THE FILE
}
}
closedir($handle);
}
感谢@MyLibary:)
答案 2 :(得分:0)
如果您指的是 STORAGE 文件夹中的不是的 public 文件夹,但是,如果您想处理与Laravel存储(Laravel文件系统)一起使用,您可以将该文件夹定义为文件系统的磁盘,并按以下方式使用。
在文件系统配置config/filesystems.php
中,disks
部分添加以下代码:
'disks' => [
...
'public_site' => [
'driver' => 'local',
'root' => public_path(''),
'visibility' => 'public',
],
...
],
然后您可以在应用中使用以下命令:
$contents = Storage::get('img/file.jpg');
或获取文件列表:
$files = Storage::files('img');
$files = Storage::allFiles('img');
有关Laravel存储(Laravel文件系统)的更多详细信息在这里: https://laravel.com/docs/5.8/filesystem
注意:如果您更改了公用文件夹,则可以在磁盘定义中使用base_path()并使用相对路径,如下所示(否则不要使用):>
'disks' => [
...
'public_site' => [
'driver' => 'local',
'root' => base_path('../../public'),
'visibility' => 'public',
],
...
],
答案 3 :(得分:0)
Laravel解决方案1
public function index()
{
$path = public_path('test');
$files = File::allFiles($path);
dd($files);
}
Laravel解决方案2
public function index()
{
$path = public_path('test');
$files = File::files($path);
dd($files);
}
PHP解决方案
public function index()
{
$path = public_path('demo');
$files = scandir($path);
dd($files);
}