Yii2 - 如何列出文件夹中的文件

And*_*tro 17 php file list yii yii2

嗨,我正在制作一个Yii2 Basic应用程序,并在管理区域中有一个文件上传表单. 文件上传将文件发送到app/web/uploads.我遵循了从samdark上传文件的精彩教程.可以在这里看到:https://github.com/yiisoft/yii2/blob/master/docs/guide/input-file-upload.md

我需要做的是创建一个视图,呈现上传文件夹中每个文件的超链接.

在Yii1.xx中有一个扩展来处理名为Cfile的文件非常方便.我在几个应用程序中使用我现在想做的事情.

使用Cfile我能够编写如下代码:

$ cfileDir = Yii :: app() - > file-> set('pdfs /'); //将pdfs设置为目标文件夹

$ files = $ cfileDir-> getContents();

getContents()方法很棒,因为它让我以后应用foreach循环并列出文件夹中的所有文件.

在Yii2中如何在uploads文件夹中执行类似的操作,即该文件夹中的文件列表并在视图中创建超链接.

为了创建视图内的超链接,我可以使用Html :: a(),但要获取其中的所有文件,我不知道该怎么做.

有任何想法吗 ??谢谢.

编辑

解决了ALI的精彩提示.

这是完整的代码块

<?php
    $files=\yii\helpers\FileHelper::findFiles('uploads/');
    if (isset($files[0])) {
        foreach ($files as $index => $file) {
            $nameFicheiro = substr($file, strrpos($file, '/') + 1);
            echo Html::a($nameFicheiro, Url::base().'/uploads/'.$nameFicheiro) . "<br/>" . "<br/>" ; // render do ficheiro no browser
        }
    } else {
        echo "There are no files available for download.";
    }
?>
Run Code Online (Sandbox Code Playgroud)

Ali*_*our 31

Yii2可以使用实现这个FileHelper类象下面这样:

$files=\yii\helpers\FileHelper::findFiles('/path/to');
Run Code Online (Sandbox Code Playgroud)

现在,您将所有文件列表$files变量作为数组.

findFiles() 方法,返回在指定目录和子目录下找到的文件.

另一个例子:

\yii\helpers\FileHelper::findFiles('.',['only'=>['*.php','*.txt']]);
Run Code Online (Sandbox Code Playgroud)

以上示例列出了仅包含phptxt扩展名的所有文件.

\yii\helpers\FileHelper::findFiles('.',['except'=>['*.php','*.txt']]);    
Run Code Online (Sandbox Code Playgroud)

上面的示例列出了除扩展名phptxt扩展名之外的所有文件.

\yii\helpers\FileHelper::findFiles('.',['recursive'=>FALSE]);
Run Code Online (Sandbox Code Playgroud)

上面的示例没有列出子目录下的文件