Google云端硬盘文件ID和文件夹ID约定

时间:2014-02-10 15:38:19

标签: google-drive-api

我希望获取Google云端硬盘中文件夹中的所有文件(给定初始文件夹ID),包括子文件夹中的所有文件。目前,我能够检索不包含任何子文件夹的文件夹中的所有文件,并且我正在尝试实现递归查看子文件夹并获取所有文件的下一步。

我在folderId上使用 drive.children.list ,并接收 drive#childReference 对象的数组。不幸的是,这些对象并没有直接告诉我它是文件夹还是文档,但我注意到folderIds比fileIds短得多。

即。下面的第一个对象是文件夹,第二个对象是文件。文件夹的id比文件短得多,但没有其他任何东西可以帮助我区分每个对象是文件夹还是文件。

[ { kind: 'drive#childReference',
       id: '0B2ecLLJU7rP3a2ZmVFZQVDdIRXM',
       selfLink: 'https://www.googleapis.com/drive/v2/files/0B2ecLLJU7rP3YXM0U2tOVm1wcVE/children/0B2ecLLJU7rP3a2ZmVFZQVDdIRXM',
       childLink: 'https://www.googleapis.com/drive/v2/files/0B2ecLLJU7rP3a2ZmVFZQVDdIRXM' },
     { kind: 'drive#childReference',
       id: '178rrwgIQxuoUgphvVYKppTM37PzT1yhzQOr9E1Shpf4',
       selfLink: 'https://www.googleapis.com/drive/v2/files/0B2ecLLJU7rP3YXM0U2tOVm1wcVE/children/178rrwgIQxuoUgphvVYKppTM37PzT1yhzQOr9E1Shpf4',
       childLink: 'https://www.googleapis.com/drive/v2/files/178rrwgIQxuoUgphvVYKppTM37PzT1yhzQOr9E1Shpf4' } ]

我真的希望我不必再为每个对象发出另一个请求,以确定它是文件夹还是文件。但我担心简单地确定身份证的长度太弱了。有没有人有什么建议?仅根据身份证的长度作出决定是否安全?

谢谢!

3 个答案:

答案 0 :(得分:2)

根据documentation

  

文件夹是MIME类型为application / vnd.google-apps.folder并且没有扩展名的文件。

因此,您可以通过查看File密钥来确定mimeType对象是否为文件夹。

答案 1 :(得分:1)

仅根据身份证的长度做出决定是否安全?

没有

有人有任何建议吗?

一些建议

  • 对于每个子ID,获取其对象。我认为这是你试图避免做的事情。
  • 不是递归文件夹,而是对所有文件夹执行files.list查询,然后迭代它们以构建内存中的层次结构。
  • 根据您的应用,请记住文件可以包含多个父级。因此,folder1 / folder2 / folder3中的文件可以同时将folder3 folder1作为父项。然后,您只需要查询folder1的所有子项以获取所有文件。

答案 2 :(得分:0)

拨打files.list

云端硬盘中的文件夹被视为包含元数据的特殊文件类型。 这使您可以使用files.list获取文件和文件夹的列表。 您可以判断该项目是否为使用mimeType的文件夹,该文件夹作为文件资源字段之一返回。

顺便说一句,强烈建议您根据需要进行api调用以探索用户的文件夹。 API调用很慢,一些重度用户可能会冻结您的应用程序。而且您很容易达到API使用限制。