我可以访问 Dropbox App 文件夹中子文件夹的内容吗

Can I access content of subfolders within Dropbox App folder

我已经使用 Dropbox API 设置了我的第一个小型演示应用程序,但无法看到 App 文件夹中子文件夹的任何内容。在设置选项卡上,我看到: 权限类型:应用文件夹(此应用 read/write 只能访问其文件夹内的文件)。

我的文件夹结构如下所示:

我的代码看起来就像没有修改的 C# 教程:

async Task ListRootFolder(DropboxClient dbx)
{
    var list = await dbx.Files.ListFolderAsync(string.Empty);

    // show folders then files
    foreach (var item in list.Entries.Where(i => i.IsFolder))
    {
        Console.WriteLine("D  {0}/", item.Name);
    }

    foreach (var item in list.Entries.Where(i => i.IsFile))
    {
        Console.WriteLine("F{0,8} {1}", item.AsFile.Size, item.Name);
    }
}

只打印出File1和Folder1;它永远不会到达 File2 或 Folder2(也不会扩展到 File3)。

我是否误解了 App 文件夹权限的含义(因为它不允许访问子文件夹),或者我应该调用 API 的另一部分来打开子文件夹?在完成 list.Entries 的第一次迭代后,我尝试使用 ListFolderContinueAsync(list.Cursor) 方法,但它只是返回一个空的枚举器。

如果将子文件夹名称传递给 ListFolderAsync 方法,则可以访问子文件夹的内容:

var list = await dbx.Files.ListFolderAsync(@"/Folder1/Folder2");

名称必须以“/”为前缀。

默认ListFolderAsync won't return subfolders. To get subfolders (and all children), you should use the Recursive parameter on ListFolderAsync,例如:

var list = await dbx.Files.ListFolderAsync(string.Empty, true);

这优于为每个子文件夹单独调用 ListFolderAsync

无论哪种情况,请务必检查 HasMore and call back to ListFolderContinueAsync if necessary, per the ListFolderAsync documentation