如何使用Google Drive API v3列出根目录中的文件/目录?

6

我正在开发一个网站项目。我已经在Google Developers Console上创建了一个应用程序,并在我的服务器上安装了Google SDK。授权完成,离线访问完成,列出所有文件/目录完成,创建文件完成。

现在我想列出位于根目录中的文件/目录。我的意思是只列出那些不是所有子目录的文件/目录。

以下是代码示例:

    // $client is a Google_Client object
    $service = new Google_Service_Drive($client);
    // Print the names and IDs for up to 10 files.
    $optParams = array(
        'pageSize' => 10,
        'fields' => "nextPageToken, files(contentHints/thumbnail,fileExtension,iconLink,id,name,size,thumbnailLink,webContentLink,webViewLink,mimeType,parents)",
        'q' => "trashed=false"
    );
    $results = $service->files->listFiles($optParams);

    if (count($results->getFiles()) == 0) {
        print "No files found.\n";
    } else {

        print "Files:\n";
        foreach ($results->getFiles() as $file) {
            echo "Dosya Adı: ".$file->getName()."<br>";
            echo "Dosya Id: ".$file->getId()."<br>";
            echo "Tip: ".$file->getMimeType()."<br>";
            echo "Dosya Link: ".$file->getWebContentLink()."<br>";
            echo "Dosya Link: ".$file->getWebViewLink()."<br>";
        }
    }

这段代码列出了所有文件/目录(不在垃圾箱中)。我在 q 中添加了 "'root' in parents",但它没有给出任何结果。在文档中没有找到有用的信息。
以下是输出内容:
Files:
Dosya Adı: 1.jpg
Dosya Id: **some-id**
Tip: image/jpeg
Dosya Link: https://docs.google.com/uc?id=**some-id**&export=download
Dosya Link: https://drive.google.com/file/d/**some-id**/view?usp=drivesdk


Dosya Adı: images2
Dosya Id: **some-id**
Tip: application/vnd.google-apps.folder
Dosya Link: 
Dosya Link: https://docs.google.com/folderview?id=**some-id**&usp=drivesdk


Dosya Adı: images
Dosya Id: **some-id**
Tip: application/vnd.google-apps.folder
Dosya Link: 
Dosya Link: https://docs.google.com/folderview?id=**some-id**&usp=drivesdk


Dosya Adı: sample_01.jpg
Dosya Id: **some-id**
Tip: image/jpeg
Dosya Link: https://docs.google.com/uc?id=**some-id**&export=download
Dosya Link: https://drive.google.com/file/d/**some-id**/view?usp=drivesdk


Dosya Adı: 1302.pdf
Dosya Id: **some-id**
Tip: application/pdf
Dosya Link: https://docs.google.com/uc?id=**some-id**&export=download
Dosya Link: https://drive.google.com/file/d/**some-id**/view?usp=drivesdk

1
请同时提供您代码的输出结果。 - Jujhar Singh
2个回答

8
您可以使用“root”作为根目录ID的别名:
$driveService->files->listFiles([
    // 'q' => '"'.MAIN_FOLDER_ID.'" in parents', // optionnal
    'q' => '"root" in parents', // optionnal
    'pageSize' => 100, // 1 to 1000
    'fields' => 'nextPageToken, files(id, name, mimeType, parents)'
]);

thumbs up for you sir. - JGCW

4

我终于找到了解决方案。

// $client is a Google_Client object
function rootFolderId($client) {
    $service = new Google_Service_Drive($client);

    $results = $service->files->get('root');
    return $results->getId();
}

请问您能否在这里添加一个完整的解决方案?您是如何使用$optParams中的root id的? - Bjørson Bjørson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接