Dropbox API:仅列出文件(包括子文件夹中的文件)

时间:2013-09-09 10:58:12

标签: php dropbox dropbox-api dropbox-php

我正在尝试列出特定Dropbox文件夹中的所有文件,包括子文件夹中的文件,但不自行显示文件夹

我正在使用DropboxClient PHP类,但我没有附加它。

我当前的代码仅适用于第一个子文件夹中的文件。此外,由于我独立查询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

2 个答案:

答案 0 :(得分:2)

delta调用是获取Dropbox整个状态的更有效方式,而不是调用每个文件夹的元数据。增量端点将返回共同包含所有文件的元数据条目页面。

答案 1 :(得分:1)

我认为你不再感兴趣了,但在我寻找类似的东西时,我发现了你。来自&#34; DropboxClient PHP Class&#34;文件:

  

GetFiles($dropbox_path=”, $recursive=false)获取文件夹的文件列表。   返回一个数组,其中键入文件路径和值元数据。如果   $recursive为真,所有子文件夹都经过递归扫描。注意   这可能需要一些时间,因为每个子文件夹都会导致新的API   请求。

所以我认为您只需将代码更改为:$dropbox->GetFiles("/Downloads/",true);

相关问题