Php 在驱动器SDK上按文件夹获取文件列表

Php 在驱动器SDK上按文件夹获取文件列表,php,google-drive-api,Php,Google Drive Api,我正在尝试为用户构建一个web UI,以导航他/她的Google驱动器,并从数据库中选择一个或多个稍后在网站中引用的文档。我目前正在使用PHP构建一个web界面 我面临的问题是,我找不到一个函数来按文件夹Id获取文件列表 我尝试使用: $service->children->listChildren($rootFolderId) …但这只会给出文件夹中文件的文件引用ID(所谓的子资源项),这意味着我必须循环浏览这些文件,并为每个文件创建一个调用,以便获取UI所需的所有元数据 不幸的

我正在尝试为用户构建一个web UI,以导航他/她的Google驱动器,并从数据库中选择一个或多个稍后在网站中引用的文档。我目前正在使用PHP构建一个web界面

我面临的问题是,我找不到一个函数来按文件夹Id获取文件列表

我尝试使用:

$service->children->listChildren($rootFolderId)
…但这只会给出文件夹中文件的文件引用ID(所谓的子资源项),这意味着我必须循环浏览这些文件,并为每个文件创建一个调用,以便获取UI所需的所有元数据

不幸的是

$service->files->list()
..将按文件夹列出所有没有筛选选项的我的文件

我想知道是否有一种有效的方法可以从对驱动器服务器的一次调用中提取文件夹文件列表。事实上,我记得能够在旧的GoogleDocAPI上执行此任务


非常感谢您的帮助

NB此答案使用v2 API。新应用程序应写入v3 API。

可以使用drive.files.list端点列出属于特定文件夹的文件

为此,您可以按如下方式使用
?q=
查询参数:

GET https://www.googleapis.com/drive/v2/files?q="'<FOLDER_ID>' in parents"
GEThttps://www.googleapis.com/drive/v2/files?q=““”在父项中”
在PHP中,这将是

$service->files->list(array('q' => "'<FOLDER_ID>' in parents"));
$service->files->list(数组('q'=>“');

查询参数
在父项中是否会列出文件和/或文件夹在父项中具有这样的属性?
在我看来,这是预期的结果。我提出这个问题是因为,在上面的答案中,有一条是这样的:

。。。列出属于特定文件夹的文件

报告解释说:

这将查找ID为的父文件夹的所有子文件夹 1234567


我要补充的是,通过向查询字符串中添加类似于
和mimeType='application/vnd.google apps.Folder'

的内容,可以返回一个只有文件夹的列表。

无需使用搜索查询。 只需打个电话给 获取{folderId}/子项


现在很简单,不用担心。如果您想从特定文件夹获取所有文件和文件夹,只需将此代码复制并粘贴到项目中,它就会从特定文件夹中检索所有文件和文件夹。 注意:您应该有自己的文件夹ID

 List<File> result = new ArrayList<File>();
    Files.List request = null;

    try {
          request = mService.files().list();//plz replace your FOLDER ID in below line
          FileList files = request.setQ("'"+MyFoler_Id+"' in parents and trashed=false"").execute();
          result.addAll(files.getItems());          
          request.setPageToken(files.getNextPageToken());
        } 
      catch (IOException e)
      {
        System.out.println("An error occurred: " + e);
        request.setPageToken(null);
      }

这将返回一个错误。如果在此处测试:使用有效的文件夹ID,它将返回“400错误请求”错误。如果删除“in parents”位,那么它将返回file对象。在对它进行了更多操作之后,我能够通过一个警告来实现这一点:除了包装搜索字符串的单引号外,还必须将变量包装为单引号。所以它看起来是这样的:“q'=>”“$folderID”在parents中“这个只返回一级子级。您可以通过向查询中添加
trashed=false
来筛选出垃圾文件。操作符列表可以在这里找到:但它不会返回文件对象。它返回不同的子对象,但一旦得到响应,就会得到id列表,因此需要为每个文件发出另一个get请求。在我看来,这不像PHP。示例程序是Java。请参阅
  for(File f:result)
  {
      System.out.println("My recvd data "+f.getTitle());
  }