Yii2 - Как перечислить файлы внутри папки
Привет, я делаю приложение Yii2 Basic и имею форму загрузки файла в области администратора.
Загрузка файлов отправляет файлы в приложение /web/uploads. Я последовал за большим руководством по загрузке файлов из samdark. Это можно увидеть здесь: https://github.com/yiisoft/yii2/blob/master/docs/guide/input-file-upload.md
Что мне нужно сделать, так это создать представление, которое визуализирует гиперссылки на каждый из файлов внутри папки uploads.
В 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.";
}
?>
Ответы
Ответ 1
В Yii2
вы можете достичь этого, используя FileHelper класс, как показано ниже:
$files=\yii\helpers\FileHelper::findFiles('/path/to');
Теперь у вас есть список всех файлов в переменной $files
как массив.
findFiles()
, возвращает файлы, найденные в указанном каталоге и подкаталогах.
Другие примеры:
\yii\helpers\FileHelper::findFiles('.',['only'=>['*.php','*.txt']]);
В приведенном выше списке перечислены все файлы только с расширениями php
и txt
.
\yii\helpers\FileHelper::findFiles('.',['except'=>['*.php','*.txt']]);
В приведенном выше списке перечислены все файлы со всеми расширениями, кроме php
и txt
расширений.
\yii\helpers\FileHelper::findFiles('.',['recursive'=>FALSE]);
Вышеприведенный пример не отображает файлы под подкаталогами