【发布时间】:2019-12-12 11:07:53
【问题描述】:
我可以使用以下函数列出位于谷歌驱动器根目录中的文件夹中的项目。但是当我尝试在位于父文件夹内的子文件夹中列出项目时(父文件夹位于谷歌驱动器的根目录中)
[父文件夹] //“子文件夹”和“其他文件”正在列出 └------[SUB FOLDER] //当我尝试将此文件夹 ID 作为父文件夹时,查询返回 false | └--------[文件位于子文件夹内] └------[其他文件]用于列出 google drive 中的文件的功能:
函数 listFilesFolders($client, $search, $subFolderId){ $service = new Google_Service_Drive($client); //位于谷歌驱动器根目录的文件夹ID //如果我使用此 ID 运行查询,则工作正常 $superParentId = '1Xky058b134vadgSOyD-ADFagaGAGAdgha'; //正常工作的查询 //$query = "'".$superParentId."' 在父母和垃圾= false"; //为位于父文件夹内的子文件夹运行的查询 ($superParentId) $query = "'".$subFolderId."' 在父母和垃圾= false"; $optParams = array('q' => $query); // 将文件和文件夹列表作为对象返回 $results = $service->files->listFiles($optParams); // 如果没有找到,则返回 false if (count($results->getFiles()) == 0) { 返回假; } // 将数组转换为对象 $结果 = 数组(); foreach ($results->getFiles() as $file) { $result[$file->getId()] = $file->getName(); } 返回$结果; }我可以知道如何列出位于子文件夹中的文件吗?
谢谢,
【问题讨论】:
-
您的方法需要递归并使用新的子文件夹调用自身。
-
我被困在选择父文件夹的那一部分,然后使用子文件夹 ID(递归)运行查询。你能用代码sn-p提一下吗?
-
你需要这样的东西 listFilesFolders($client, $search, $file->getId) 但我建议先检查它实际上是一个文件夹。检查文件类型,它会告诉你它是否是一个文件夹。抱歉,唯一的示例是在 C# 中,我现在没有时间在 php 中制作示例。
标签: php google-drive-api google-oauth google-api-php-client