![](/img/trans.png)
[英]Best and fast way to list a local drive's root folders and files and the size of them in php?
[英]Google Drive AP - list folders only with root folder in PHP
我正在尝试列出具有根目录的文件夹,用户可以在其中选择要上传文件的文件夹或根目录。
我可以通过将查询放在下面的这一行来实现这一点吗?
$files = $service->files->listFiles($parameters);
提前致谢
您应该能够简单地使用带有?q=
参数的Files.list来列出具有根目录的文件夹。
它看起来像这样: q:mimeType='application/vnd.google-apps.folder' and 'root' in parents and trashed=false
在上面的查询中,它根据 3 个条件进行过滤。
您可以尝试在此处测试查询。
在 PHP 代码中,这将是这样的:
$parameters['q'] = "mimeType='application/vnd.google-apps.folder' and 'root' in parents and trashed=false";
$files = $service->files->listFiles($parameters);
以下代码直接从他们的API 文档页面复制而来。 您需要指定一个$service
和一个$folderId
。
在 GoogleDrive 中获得这样的 ID 有点棘手,最好通过他们的搜索参数来完成。 请参阅我的函数getSOFolderByName
() 以获取示例(搜索名为“stackoverflow”的文件夹并检索它可以找到的第一个 ID)。 listSOFolder()
是起点。
function listSOFolder($service) {
$folderID = getSOFolderByName($service);
if ($folderID)
printFilesInFolder($service, $folderID);
}
function getSOFolderByName($service) {
$search = "title='stackoverflow' AND mimeType = 'application/vnd.google-apps.folder' AND trashed != true";
$parameters = array("q" => $search);
$files = $service->files->listFiles($parameters);
if (!empty($files["items"])) {
$folderID = $files["items"][0]->getId(); // the first element
return $folderID;
} else
return false;
}
/**
* Print files belonging to a folder.
* Copied shamelessly from https://developers.google.com/drive/v2/reference/children/list
* @param Google_Service_Drive $service Drive API service instance.
* @param String $folderId ID of the folder to print files from.
*/
function printFilesInFolder($service, $folderId) {
$pageToken = NULL;
do {
try {
$parameters = array();
if ($pageToken) {
$parameters['pageToken'] = $pageToken;
}
$children = $service->children->listChildren($folderId, $parameters);
foreach ($children->getItems() as $child) {
print 'File Id: ' . $child->getId();
}
$pageToken = $children->getNextPageToken();
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
$pageToken = NULL;
}
} while ($pageToken);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.