Dropbox API: Списък само на файлове (включително тези в подпапки)

Опитвам се да изброя всички файлове в конкретна папка на 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

person rafleo    schedule 09.09.2013    source източник


Отговори (2)


Мисля, че вече не се интересувате, но докато търсих нещо подобно, намерих това от вас. От документацията "DropboxClient PHP Class":

GetFiles($dropbox_path=”, $recursive=false) Вземете списък с файлове на папка. Връща масив, в който ключовете са пътищата на файла и стойностите на метаданните. Ако $recursive е вярно, всички подпапки се сканират рекурсивно. Имайте предвид, че това може да отнеме известно време, тъй като всяка подпапка предизвиква нова заявка за API.

Така че мисля, че просто променяте кода си на: $dropbox->GetFiles("/Downloads/",true);

person Raffobaffo    schedule 08.02.2018

Обаждането delta е по-ефективен начин за получаване на цялото състояние на Dropbox, за разлика от извикването на метаданни за всяка папка. Делта крайната точка ще върне страници от записи на метаданни, които колективно съдържат всички файлове.

person Greg    schedule 09.09.2013