我可以访问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)方法,但它只是返回一个空枚举器。

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

默认情况下,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");

名称前必须加"/"