我使用Dropbox API设置了我的第一个小型演示应用,但无法在App文件夹中看到任何子文件夹的内容。在设置选项卡上,我看到: 权限类型:应用程序文件夹(此应用程序仅对其文件夹中的文件具有读/写权限。)
我的文件夹结构如下所示:
我的代码看起来就像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
方法,但它只是返回一个空的枚举器。
答案 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");
名称必须以' /'为前缀。