我正在尝试列出特定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
答案 0 :(得分:2)
delta调用是获取Dropbox整个状态的更有效方式,而不是调用每个文件夹的元数据。增量端点将返回共同包含所有文件的元数据条目页面。
答案 1 :(得分:1)
我认为你不再感兴趣了,但在我寻找类似的东西时,我发现了你。来自&#34; DropboxClient PHP Class&#34;文件:
GetFiles($dropbox_path=”, $recursive=false)
获取文件夹的文件列表。 返回一个数组,其中键入文件路径和值元数据。如果$recursive
为真,所有子文件夹都经过递归扫描。注意 这可能需要一些时间,因为每个子文件夹都会导致新的API 请求。
所以我认为您只需将代码更改为:$dropbox->GetFiles("/Downloads/",true);