Опитвам се да изброя всички файлове в конкретна папка на Dropbox, включително файловете в подпапки, но без да показвам самите папки.
Използвам DropboxClient PHP Class, но не съм свързан с него.
Текущият ми код работи само за файлове в първите подпапки. Освен това зареждането отнема много време, тъй като питам 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="/bg<?= $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