Мне нужно показать каталог и подкаталоги с моего FTP-сервера, чтобы они выглядели так:
https://www.jquery-az.com/jquery/demo.php?ex=77.0_1
Я сделал это с помощью PHP-функции ftp_list_files_recursive
:
<code>/* contents - ftp function */
function ftp_list_files_recursive($ftp_stream, $path){
$lines = ftp_rawlist($ftp_stream, $path);
$result = array();
foreach ($lines as $line){
$tokens = explode(" ", $line);
$name = $tokens[count($tokens) - 1];
$type = $tokens[0][0];
$filepath = $path . "/" . $name;
if ($type == 'd'){
$result = array_merge($result, ftp_list_files_recursive($ftp_stream, $filepath));
} else {
$result[] = $filepath;
}
}
return $result;
}
/* contents - ftp */
$contents = ftp_list_files_recursive($conn_id, ".");
echo '<pre>';
print_r($contents);
echo '
';
Используя вышеуказанную функцию, он возвращает мне список папок, подпапок и файлов:
Array
(
[0] => ./Forze.Vacation.2016-Italy/Hotel01/Forze.Hotel-Italy.mp4
[1] => ./Forze.Vacation.2016-Italy/Hotel01/Forze.Hotel-Italy.txt
[2] => ./Forze.Vacation.2016-Italy/Hotel01/DSC0586.png
[3] => ./Forze.Vacation.2016-Italy/Hotel01/DSC0587.png
[4] => ./Forze.Vacation.2016-Italy/Hotel01/Rooms/DSC0597.png
[5] => ./Forze.Vacation.2016-Italy/Hotel01/Rooms/DSC0598.png
[6] => ./Forze.Vacation.2016-Italy/Hotel01/Rooms/Beths/DSC0600.png
[7] => ./Forze.Vacation.2016-Italy/Hotel01/Rooms/Beths/DSC0601.png
[8] => ./Forze.Vacation.2016-Italy/Hotel01/Rooms/Kitchen/DSC0602.png
[9] => ./Forze.Vacation.2016-Italy/Hotel01/Rooms/Kitchen/DSC0603.png
[10] => ./Unsorted.Hotel.Room.[Room-123].png
[11] => ./Unsorted.Hotel.Bathroom.[Bathroom-124].png
)
Так что это должно выглядеть так:
Forze.Vacation.2016-Italy
-> Hotel01
Forze.Hotel-Italy.mp4
Forze.Hotel-Italy.txt
DSC0586.png
DSC0587.png
-> Rooms
DSC0597.png
DSC0598.png
-> Beths
DSC0600.png
DSC0601.png
-> Kitchen
DSC0602.png
DSC0603.png
Unsorted.Hotel.Room.[Room-123].png
Unsorted.Hotel.Bathroom.[Bathroom-124].png
Iпопробуйте использовать функцию PHP, чтобы проверить, чтобы папка и подпапка генерировали <ul>
<li>
и </ul>
и </ul>
<div id="treeview-checkbox-demo">
<ul>
<?php
$f = -1;
$sub = -1;
$files = 1;
foreach ($result as &$value) {
/* check - subdirectory */
if (strpos($value, 'SUBDIR') !== false) {
$folder = str_replace($folder, '', $value);
$folder = str_replace('SUBDIR.//', '', $folder);
echo '<li> '.$folder;
echo '<ul>';
$sub = 1;
$files++;
}
/* check - folder */
if (strpos($value, 'FOLDER') !== false) {
/* end folder */
if ($f == 0) {
echo '</ul>';
echo '</li>';
}
$folder = explode('./', $value)[1];
echo '<li> '.$folder;
echo '<ul>';
$f = 0;
} else {
if ($sub == 1) {
/* show filename */
$file = explode('./', $value)[$files];
$file = explode('/', $file)[$files+1];
if ($file) {
echo '<li data-value="'.$value.'"> '.$file.'</li>';
$f = 0;
}
} else {
/* show filename */
$file = explode('./', $value)[$files];
$file = explode('/', $file)[$files];
echo '<li data-value="'.$value.'"> '.$file.'</li>';
$f = 0;
}
}
}
?>
</ul>
</div>
Но она создает папки и несоответствующие подпапки и файлы внутри ... и требуетчтобы иметь такую структуру:
https://www.jquery-az.com/jquery/demo.php?ex=77.0_1
Я создаю административный сайт для администрации отелей, чтобы загружать / выгружать файлы на FTP-сервер, но я застрял с <ul>
<li>
поколением folders/subfolders/files