【问题标题】:What's the right way to find files by "full path" in Google Drive API v2在 Google Drive API v2 中通过“完整路径”查找文件的正确方法是什么
【发布时间】:2013-06-23 23:13:01
【问题描述】:

亲爱的

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

  1. 列出根文件夹的子文件夹并找到名称等于“path0”的所有子文件夹并将它们放入列表“result0”
  2. 查找“result0”中名称等于“path1”的所有子项,并将它们放入列表“result1”
  3. 查找“result1”中名称等于“path2”且...的所有子项...

上述方法似乎效率很低,因为它需要我的应用程序和 Drive 之间的多次交互。我了解 Google Drive 允许多个文件共享相同的文件名,即使在同一个文件夹中也是如此。如果我能做这样的事情会很方便:

listDocByFullPath("path0/path1/path2")

当前版本的 Google Drive SDK 可以做到这一点吗?如果还没有,我想知道是否有比我在这里列出的更简单的方法。

顺便说一句,由于我的应用程序纯粹是一个后端服务,所以无法使用谷歌提供的文件选择器。

干杯。

【问题讨论】:

标签: google-drive-api


【解决方案1】:

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

  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. 继续前进,直到到达目标文件夹。

【讨论】:

  • 我希望看到一项服务来为我解析目标 ID。
  • 嗨,Burcu 感谢您的回复。这正是我现在正在做的。目前看来还可以。虽然我担心未来的表现。随着目录深度的增加,我的应用程序和 Drive API 之间的交互似乎线性增加。我提出的 API 可以真正简化这里的事情。干杯。
  • @burcu-dogan 将来有没有机会将这样的功能包含在 api 中?在 Google Drive API 端完成迭代时,性能应该会提高。
【解决方案2】:

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

【讨论】:

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

    基本上是自下而上检查

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-05
      • 2019-02-04
      • 2021-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      相关资源
      最近更新 更多