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

use*_*365 32 google-drive-api

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

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

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

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

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

我也试过这个(基于对类似问题的回答):我正在使用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"
 }
}
Run Code Online (Sandbox Code Playgroud)

即使使用谷歌的测试页也不行.看起来"文件"端点不接受任何参数.

必须有一种方法来实现这一目标!

谢谢您的帮助

Joa*_*son 34

您应该能够简单地使用带有父查询的文件/列表 ;

GET https://www.googleapis.com/drive/v2/files?q='BB0CHANGEDIDF5waGdzbUQ5aWs'+in+parents&key={YOUR_API_KEY}
Run Code Online (Sandbox Code Playgroud)

  • 请提供任何有关 api v3 的文档? (3认同)
  • 如果您想知道,父母中的 q='root' 将为您提供顶级文件夹 (2认同)

XP1*_*XP1 9

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

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

将"folderId"替换为文件夹ID.

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


Jes*_*íaz 9

如果您使用 v3 在 javascript 上执行此操作,请在请求正文上尝试此操作:

{
  q: `'${folderId}' in parents`
}
Run Code Online (Sandbox Code Playgroud)

但是,这也可以列出该文件夹中已删除并在 bin 中的文件。因此,您可以这样做:

{
  q: `'${folderId}' in parents and trashed = false`
}
Run Code Online (Sandbox Code Playgroud)