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

时间:2016-11-12 12:23:42

标签: java c# dropbox dropbox-api

我使用Dropbox API设置了我的第一个小型演示应用,但无法在App文件夹中看到任何子文件夹的内容。在设置选项卡上,我看到: 权限类型:应用程序文件夹(此应用程序仅对其文件夹中的文件具有读/写权限。)

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

  • /应用程序/ MyAppFolderName / Folder1中/ FOLDER2 /文件3
  • /应用程序/ MyAppFolderName / Folder1中/文件2
  • /应用程序/ MyAppFolderName / File1中

我的代码看起来就像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的另一部分来打开子文件夹?我在完成ListFolderContinueAsync(list.Cursor)的第一次迭代后尝试使用list.Entries方法,但它只是返回一个空的枚举器。

2 个答案:

答案 0 :(得分:1)

默认情况下,ListFolderAsync不会返回子文件夹。要获取子文件夹(以及所有子文件),您应该使用Recursive上的ListFolderAsync参数,例如:

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

这比单独为每个子文件夹调用ListFolderAsync更受欢迎。

在任何一种情况下,请务必检查HasMore并根据ListFolderContinueAsync

在必要时回复ListFolderAsync documentation

答案 1 :(得分:0)

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

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

名称必须以' /'为前缀。