我正在尝试获取在父目录下创建的所有文件。父目录有很多子目录,后跟这些目录中的文件。
parent
--- sub folder1
--- file1
--- file2
目前我正在抓取子文件夹的所有ID并构建查询,例如父项中的 q:'subfolder1id'或父项中的'subfolder2id'以查找文件列表。然后我分批发布这些。如果我有100个文件夹,我会发出10个搜索查询,批量大小为10。
有没有更好的方法使用google drive rest api查询文件,这将通过一个查询获取所有文件?
答案 0 :(得分:3)
以下是您问题的answer。
与您的方案相同的想法:
folderA____ folderA1____folderA1a \____folderA2____folderA2a \___folderA2b
我认为你可以从中获得3个替代答案。
替代方案1.递归
诱惑就是列出folderA的子节点 孩子们是文件夹,递归地列出他们的孩子,冲洗, 重复。在极少数情况下,这可能是最好的 方法,但对大多数人来说,它有以下问题: -
- 为每个子文件夹执行服务器往返是非常耗时的。这当然取决于树的大小,所以如果 你可以保证树的大小很小,也可以。
备选方案2.共同父母
如果您的应用程序正在创建所有文件,则效果最佳(即。 您正在使用drive.file范围)。以及文件夹层次结构 在上面,创建一个名为say" MyAppCommonParent"的虚拟父文件夹。如 您还可以将每个文件创建为其特定文件夹的子文件 让它成为MyAppCommonParent的孩子。这变得更多 直观的,如果你还记得将文件夹视为标签。你现在可以 只需查询
MyAppCommonParent in parents
即可轻松检索所有后缀。备用3.文件夹优先
首先获取所有文件夹。是的,所有这些。一旦你拥有它们 在内存中,您可以爬过其父属性并构建 您的树结构和文件夹ID列表。然后你可以做一个
files.list?q='folderA' in parents or 'folderA1' in parents or 'folderA1a' in parents....
使用这种技术,你可以得到 一切都在两个http电话中。备选方案2是最有效的,但只有在你有效的情况下才有效 控制文件创建。备选方案3通常更有效 比备选方案1,但可能有一些小树的大小,其中1 是最好的。
答案 1 :(得分:1)
c:/CMMS.