如何在Google Drive API上按文件夹获取文件列表

时间:2014-07-13 06:15:40

标签: google-drive-api

我正在尝试构建一个网络用户界面,供用户浏览他/她的Google云端硬盘,然后选择一个或多个文档,以便稍后在数据库的网站中引用。我目前正在使用.NET构建Web界面。 我面临的问题是我找不到一个函数来获取文件夹Id的文件列表。 我尝试使用:

... www.googleapis.com/drive/v2/files/BB0CHANGEDIDF5waGdzbUQ5aWs/children

...但是这只会给出文件夹中文件的文件引用ID(所谓的子资源项),这意味着我必须遍历这些文件并为每个文件创建一个调用才能获得我的UI需要的所有元数据。 不幸的是..

... www.googleapis.com/drive/v2/files

..将按文件夹列出我的所有文件,没有过滤选项。 我想知道是否有一种有效的方法来提取文件夹&从一次调用驱动器服务器到特定文件夹的文件列表。

我也试过这个(based on answer to the similar issue): 我正在使用Fiddler直接调用api。当我用它来调用`

... www.googleapis.com/drive/v2/files?q='BB0CHANGEDIDF5waGdzbUQ5aWs'

我收到错误:

{
 "error": {
  "errors": [
   {wrongID
    "domain": "global",
    "reason": "invalid",
    "message": "Invalid Value",
    "locationType": "parameter",
    "location": "q"
   }
  ],
  "code": 400,
  "message": "Invalid Value"
 }
}

即使使用google's test page也不会这样做。 看起来“文件”端点不接受任何参数。

必须有办法实现这一目标!

感谢您的帮助

3 个答案:

答案 0 :(得分:31)

您应该能够将files/list与父查询一起使用;

GET https://www.googleapis.com/drive/v2/files?q='BB0CHANGEDIDF5waGdzbUQ5aWs'+in+parents&key={YOUR_API_KEY}

答案 1 :(得分:6)

以下是使用v3 API获取文件夹中特定文件字段的方法:

https://www.googleapis.com/drive/v3/files?q="folderId"+in+parents&fields=files(md5Checksum,+originalFilename)
//

将“folderId”替换为文件夹ID。

您可以使用&fields=files(*)获取所有文件的字段。

答案 2 :(得分:2)

如果您要在带有v3的javascript上执行此操作,请在请求正文中尝试以下操作:

{
  q: `'${folderId}' in parents`
}

但是,这也可能列出该文件夹中已删除的文件并位于bin中。因此,您可以这样操作:

{
  q: `'${folderId}' in parents and trashed = false`
}