在Drive SDK上按文件夹获取文件列表

时间:2012-07-09 18:11:35

标签: php google-drive-api

我正在尝试构建一个网络用户界面,供用户浏览他/她的Google云端硬盘,然后选择一个或多个文档,以便稍后在数据库的网站中引用。我目前正在使用PHP构建一个Web界面。

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

我尝试使用:

$service->children->listChildren($rootFolderId)

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

不幸的是..

$service->files->list()

..将按文件夹列出我的所有文件,没有过滤选项。

我想知道是否有一种从单个调用驱动器服务器中提取文件夹文件列表的有效方法。我实际上还记得能够通过旧的Google DOC API执行此操作。

非常感谢您的帮助

4 个答案:

答案 0 :(得分:30)

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

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

为此,您可以使用?q=查询参数,如下所示:

GET https://www.googleapis.com/drive/v2/files?q="'<FOLDER_ID>' in parents"

在PHP中,那将是

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

答案 1 :(得分:3)

查询参数<FOLDER_ID> in parents列出 文件和/或文件夹 是否具有&lt; FOLDER_ID&gt;在父母身上?
在我看来, - 这是预期的结果。我问这个问题是因为,在上面的回答中,有人写道:

  

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

documentation about search-parameters解释说:

  

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

我将补充说,可以通过向查询字符串添加诸如
and mimeType='application/vnd.google-apps.folder'
之类的内容来返回仅文件夹列表。

答案 2 :(得分:1)

无需使用搜索查询。 只需拨打电话即可 获取https://www.googleapis.com/drive/v2/files/ {folderId} / children

https://developers.google.com/drive/v2/reference/children/list

答案 3 :(得分:1)

现在很容易,不用担心。如果你想从特定的FOLDER获取所有文件和文件夹,那么只需将这些代码复制并粘贴到你的项目中,它将从特定文件夹中检索所有文件和文件夹。 注意:您应该拥有自己的文件夹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);
      }
  

//打印出我们检索到的文件和文件夹标题。

  for(File f:result)
  {
      System.out.println("My recvd data "+f.getTitle());
  }