我可以访问Dropbox App文件夹内子文件夹的内容吗?
本文关键字:文件夹 App 访问 我可以 Dropbox | 更新日期: 2023-09-27 18:17:30
我已经使用Dropbox API设置了我的第一个小演示应用程序,并且无法看到应用程序文件夹内的子文件夹的任何内容。在设置选项卡上,我看到:权限类型:App文件夹(此应用程序仅对其文件夹内的文件具有读写权限)。
我的文件夹结构是这样的:
- /应用程序/MyAppFolderName/Folder1/Folder2 File3
- /应用程序/MyAppFolderName Folder1/File2
- /应用程序/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)。
我是否误解了应用程序文件夹权限的含义(因为它不允许访问子文件夹),或者我是否需要调用API的另一部分来打开子文件夹?我试图在完成list.Entries
的第一次迭代后使用ListFolderContinueAsync(list.Cursor)
方法,但它只是返回一个空枚举器。
默认情况下,ListFolderAsync
不会返回子文件夹。要获取子文件夹(和所有子文件夹),应该在ListFolderAsync
上使用Recursive
参数,例如:
var list = await dbx.Files.ListFolderAsync(string.Empty, true);
这比为每个子文件夹单独调用ListFolderAsync
更可取。
无论哪种情况,确保检查HasMore
并在必要时回调ListFolderContinueAsync
,根据ListFolderAsync
文档
如果将子文件夹名称传递给ListFolderAsync
方法,则可以访问子文件夹的内容:
var list = await dbx.Files.ListFolderAsync(@"/Folder1/Folder2");
名称前必须加"/"