如何从公用文件夹Laravel获取文件列表

时间:2019-01-13 19:22:10

标签: laravel laravel-5

我的public文件夹中有图像(未存储)

enter image description here

我想将所有这些文件放在一个列表中,对于每个文件,我都要做一些... 我怎样才能做到这一点?

4 个答案:

答案 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);
}

相关问题