1

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

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

我当前的代码仅适用于第一个子文件夹中的文件。另外,由于我单独向 Dropbox 查询每个文件夹的内容,因此加载需要很长时间。我知道我可以获得一次性递归 API 调用,但我似乎无法使用 Array。

<?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
4

2 回答 2

2

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

于 2013-09-09T23:12:31.247 回答
2

我想你不再感兴趣了,但是当我在寻找类似的东西时,我从你那里找到了这个。来自“DropboxClient PHP Class”文档:

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

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

于 2018-02-08T15:41:03.910 回答