我正在寻找一种方法,如何列出 Google Drive API v3 中特定文件夹(带有文件夹 ID)中的文件。 我使用了这个函数
$service->files->listFiles()
,但它返回谷歌云端硬盘中的所有文件。
你知道我可以使用哪个功能吗?
很酷,我找到了答案。
$optParams = array(
'pageSize' => 10,
'fields' => "nextPageToken, files(contentHints/thumbnail,fileExtension,iconLink,id,name,size,thumbnailLink,webContentLink,webViewLink,mimeType,parents)",
'q' => "'".$folderId."' in parents"
);
$results = $service->files->listFiles($optParams);
我发现对此有一个警告。如果我不是该文件夹的所有者并且尚未打开文件,则此方法不会向我显示该文件。也就是说,如果我在 Chrome 中浏览文件夹,我可以看到其中的所有文件,但如果我使用 API,我只能取回之前在浏览器中打开的两到三个文件。
更新:我明白了为什么会得到这个结果。我使用了
q=f"parents in '{folder_id}'"而不是
q=f"'{folder_id}' inParents"为什么会返回任何内容?谁知道?
这段代码非常适合我。
$optParams = array(
'corpora' => "allDrives",
'pageSize' => 100,
'fields' => "nextPageToken, files(contentHints/thumbnail,fileExtension,iconLink,id,name,size,thumbnailLink,webContentLink,webViewLink,mimeType,parents)",
'q' => "'".$folderId."' in parents",
'includeItemsFromAllDrives' => 'true',
'supportsAllDrives' => 'true'
);
$file = $driveService->files->listFiles($optParams);