通过Google Drive API v2中的“完整路径”查找文件的正确方法是什么

时间:2013-06-23 23:13:01

标签: google-drive-api

亲爱的所有

我正试图通过“完整路径”找到文档列表。在阅读API参考之后,这似乎是一项复杂的任务。假设我的路径类似于/ path0 / path1 / path2 /...

  1. 列出根文件夹的子项并找到名称等于“path0”的所有子项并将它们放入列表“result0”
  2. 查找“result0”中名称等于“path1”的项目的所有子项,并将它们放入列表“result1”
  3. 在“result1”中找到项目的所有子项,其名称等于“path2”和...
  4. 上述方法似乎效率非常低,因为它需要我的应用程序和云端硬盘之间的多次交互。我了解Google Drive允许多个文件共享相同的文件名,即使在同一个文件夹中也是如此。如果我可以这样做,那将会很方便:

    listDocByFullPath("path0/path1/path2")
    

    目前版本的Google Drive SDK是否可以实现这一目标?如果它还没有,我想知道是否有比我在这里列出的更简单的方法。

    BTW,由于我的应用程序纯粹是一种后端服务,因此无法使用Google提供的文件选择器。

    干杯。

3 个答案:

答案 0 :(得分:13)

与传统文件系统不同,文件可能位于Drive上的多个文件夹下。文件夹与标签非常相似。因此,传统路径并不总是在我们的抽象中起作用。我建议你遵循以下逻辑:

  1. 列出q = 'root' in parents and title = 'path0' and mimeType = 'application/vnd.google-apps.folder'的文件并选择第一个结果。
  2. 如果有匹配结果,请获取文件夹的ID并使用'<id of path0>' in parents and title = 'path1' and mimeType='application/vnd.google-apps.folder'执行另一个列表,然后选择第一个结果。
  3. 一直走到目标文件夹。

答案 1 :(得分:4)

最大的问题是路径无法唯一标识文件或文件夹!例如,在Web UI中,您可以创建2个名为的文件夹作为同一文件夹的子文件夹。 即你可以做一个看起来像这样的树: root |-somefolder |-somefolder

答案 2 :(得分:0)

  1. 使用参数q设置为name =的搜索/列表,并包含带有“ files(mimeType,id,name,parents)”的字段param
  2. 如果只有一个搜索结果,请返回此文件
  3. 否则,如果有多个文件,请获取父文件中的ID,并使用具有该ID的文件的get API,并检查名称是否与路径中的最后一个片段匹配。如果只有一个父ID匹配,请选择该选项,否则请选择匹配的父,然后检查路径中的下一个父元素

本质上检查自下而上