【问题标题】:Can I access content of subfolders within Dropbox App folder我可以访问 Dropbox App 文件夹中子文件夹的内容吗
【发布时间】:2016-11-12 12:23:42
【问题描述】:

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

我的文件夹结构如下:

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

【问题讨论】:

    标签: java c# dropbox dropbox-api


    【解决方案1】:

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

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

    这比单独为每个子文件夹调用ListFolderAsync 更可取。

    不过,无论哪种情况,请务必检查HasMore,并在必要时根据ListFolderAsync documentation回拨ListFolderContinueAsync

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2015-06-13
        • 1970-01-01
        • 2013-02-03
        • 2015-10-02
        • 1970-01-01
        • 2011-08-25
        • 1970-01-01
        相关资源
        最近更新 更多