Я пытаюсь вывести список всех файлов в определенной папке Dropbox, включая файлы во вложенных папках, но не отображая сами папки.
Я использую PHP-класс DropboxClient, но не привязан к нему.
Мой текущий код работает только для файлов в первых подпапках. Кроме того, загрузка занимает очень много времени из-за того, что я запрашиваю Dropbox о содержимом каждой папки независимо. Я знаю, что могу получить одноразовый рекурсивный вызов API, но, похоже, мне не удается работать с массивом.
<?php
$folders = $dropbox->GetFiles("/Downloads/",false);
if(!empty($folders)) {
$i=0;
foreach($folders as $o) {
if ($o->is_dir = true) {
list(, $foldername) = explode('-', $o->path, 2);
$i++;
$cat[$i] = $foldername;
echo '<h2>'.$foldername.'</h2>';
$files = $dropbox->GetFiles($o->path,false);
?>
<table>
<tbody><tr>
<th>File</th>
<th>Date</th>
<th>Title</th>
<th>Description</th>
</tr>
<?php foreach($files as $f): ?>
<?php
$filelink = $dropbox->GetLink($f, false);
$filetype = pathinfo($f->path, PATHINFO_EXTENSION);
$filename = pathinfo($f->path, PATHINFO_FILENAME);
$filenamesplit = explode ( '_-_', $filename);
?>
<tr>
<td><a href="<?= $filelink ?>" target="_blank">Download</a></td>
<td><?= date("d.m.Y", strtotime($f->modified)); ?></td>
<td><?= $filenamesplit[0] ?></td>
<td><?= $filenamesplit[1] ?></td>
</tr>
<?php endforeach; ?>
</tbody></table>
<?php
}
}
}
Структура файла, например. что-то вроде этого:
Cat1Folder - File 1
Cat1Folder - SubFolder - File 2
Cat1Folder - SubFolder - File 3
Cat2Folder - File 1
Cat2Folder - SubFolder - File 2
И я хочу, чтобы выводился чистый список файлов, независимо от того, в какой папке они находятся.
Cat1Folder:
File 1
File 2
File 3
Cat2Folder:
File 1
File 2