You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:28:33