Google Drive API v2获取文件仅返回有限数据问题求助
解决Google Drive API v2无法获取文件大小、创建日期等详细信息的问题
这问题我之前也碰到过!核心原因是Google Drive API v2默认只会返回精简的文件元数据,不会主动返回size、createdTime这类字段——和权限范围没关系(你的drive权限确实足够覆盖这些数据的访问),问题出在请求时没有显式指定要获取的字段。
一、修改listFiles请求,获取完整文件列表数据
在你的$parameters数组中添加fields参数,指定需要返回的字段(可以用*表示所有字段,也可以精准指定需要的字段):
$client = new Google_Client(); $client->setClientId('XXX.apps.googleusercontent.com'); $client->setClientSecret('XXX'); $client->addScope('https://www.googleapis.com/auth/drive'); $creds = @file_get_contents("ggcreds"); $client->setAccessToken($creds); $service = new Google_Service_Drive($client); if (!$service) exit(); $pageToken = NULL; do { $parameters = array( 'pageToken' => $pageToken, // 这里指定返回所有文件字段,也可以按需指定比如files(id,name,size,createdTime) 'fields' => 'nextPageToken, files(*)' ); $files = $service->files->listFiles($parameters); $pageToken = $files->nextPageToken; $files = $files->files; foreach($files as $file) { print_r($file); // 现在就能看到size、createdTime等字段了 } } while($pageToken);
二、修改get单个文件请求,获取完整元数据
调用get方法时,通过第二个参数传入fields选项,指定要返回的字段:
// 方式1:获取该文件的所有元数据字段 $file = $service->files->get($id, array('fields' => '*')); // 方式2:只获取需要的特定字段(更高效) $file = $service->files->get($id, array( 'fields' => 'id, name, size, createdTime, modifiedTime, mimeType' )); print_r($file);
为什么API Explorer能拿到完整数据?
因为API Explorer默认会帮你设置fields=*(或者你在界面上勾选了需要返回的字段),相当于自动帮你补充了这个参数,所以能获取到完整的文件元数据。
内容的提问来源于stack exchange,提问作者Entretoize
相关产品推荐
相关产品推荐

