Google api google drive API搜索具有给定文件夹ID的所有子文件

Google api google drive API搜索具有给定文件夹ID的所有子文件,google-api,google-drive-api,parent-child,Google Api,Google Drive Api,Parent Child,以下是我的文件夹在google drive中的结构: Picture |----------Date1 |-----Pic1.png |-----Pic2.png |----------Date2 |-----Pic3.png |-----Pic4.png 现在我只有图片文件夹的ID(parentID文件夹)。现在我想得到图片1(在Date1

以下是我的文件夹在google drive中的结构:

Picture
    |----------Date1
                 |-----Pic1.png
                 |-----Pic2.png
    |----------Date2
                 |-----Pic3.png
                 |-----Pic4.png

现在我只有图片文件夹的ID(parentID文件夹)。现在我想得到图片1(在Date1文件夹内)。是否可以只查询一次以获取仅包含图片文件夹ID的图片,或者我必须查询多次(获取Date1和Date2文件夹ID,然后继续查询)

这是我的密码

$imageName= "Pic1" // name of the image I want to find, which is Pic1
$folderId = "PictureFolderId" // Folder Picture's ID
$optParams = array(
            'pageSize' => 1,
            'fields' => 'nextPageToken, files(contentHints/thumbnail,fileExtension,id,name,size)',
            'q' =>"mimeType contains 'image/' AND name contains '".$imageName."' AND '".$folderId."' in parents"
          );
          $results = $googleDriveService->files->listFiles($optParams);
          
        if (count($results->getFiles()) == 0) {
            print "No files found.\n";
        } else {
            // Do something.
        }

如果我理解正确,您希望:

  • 检索作为某个文件夹的子代(子代、子代等)的所有图像文件
  • 您希望通过一个API调用检索它
答复: 目前无法通过一次调用检索子文件夹中的文件。这是因为a(而“文件夹”是一个
文件
)没有关于此父文件夹中包含哪些文件的信息(更不用说“子文件夹”中包含的文件了),并且它只有关于此文件夹的直系父级的信息,而不是祖父母等的信息

为了检索某个文件夹的所有“子体”,可以使用两种主要方法(主要基于):

方法1。列出所有文件夹:
  • 通过列出驱动器中的所有文件夹,不管它们是否在父文件夹中具有主文件夹ID。让我们将此列表称为所有文件夹
  • 根据父文件夹中是否有主文件夹ID筛选所有文件夹。让我们将此列表称为直接子项
  • 对于
    直接子项
    中的每个元素,根据父项中是否有相应的
    直接子项
    筛选
    所有文件夹
    。这样,您将检索
    孙辈的列表。对每个
    孙辈
    元素重复相同的过程,然后对每个
    曾孙辈
    等重复相同的过程,直到没有文件夹。这样,您将检索到主文件夹ID的所有子文件夹
  • 拥有所有
    子文件夹后,必须创建另一个
    文件:列表
    ,以查找这些文件夹的子文件夹或主文件夹中的图像。搜索查询可能如下所示:
  • 注意:此方法需要较少的API调用,并且在文件树相对较大时更合适
方法2。递归迭代:
  • 用于列出主文件夹中的所有文件,这些文件既可以是文件夹(也可以是它们自己的子文件夹)也可以是图像。在这种情况下,搜索查询类似于:
  • 对于此调用返回的每个子项,请检查它是图像(MIME类型包含
    image/
    )还是文件夹(MIME类型:
    application/vnd.google apps.folder
    )。对于每个文件夹,使用上一步中的方法列出其中包含的所有文件
  • 重复这两个步骤,直到没有文件夹。您检索到的所有图像都是主文件夹的“子体”
笔记: 在Issue Tracker中有一个开放的功能请求,在查询搜索中包含
祖先
,这可以允许检索子文件夹中的子文件夹,并使整个过程更加简单。您可以单击引用页面左上角的星号,以跟踪此请求并帮助确定其优先级:

参考:

您是否知道图片的名称及其父id?请编辑您的问题并包含代码。是。我在下面添加了我目前拥有的代码。请尝试“fields”=>“*”,它会将完整的文件对象返回给您。感谢您给出这个具体的答案。我试试第一条路。
mimeType contains 'image/' AND ('mainFolderId' in parents OR 'descendant1ID' in parents OR 'descendant2ID' in parents OR...)
(mimeType = 'application/vnd.google-apps.folder' OR mimeType contains 'image/') AND 'folderId' in parents