查找文件的 parent id : Google Drive API V3

Find file's parent id : Google Drive API V3

今天我将我的驱动器 API 更新到 V3 后,我找不到任何方法来找到所选文件的 parent。用于获取 json 与 parent 的信息相关的其余端点是否已更改?

如果您有相关文件的文件 ID,那么 Files: get 您需要添加字段,即父项以及文件 ID。

请求

GET https://www.googleapis.com/drive/v3/files/0B5pJkOVaKccENWNNcFFaU2lSM0E?fields=parents&key={YOUR_API_KEY}

Returns

{ "parents": [ "0B5pJkOVaKccEYW5lVHBKd1Zwc28" ] }

结果实际上是一个文件id。请记住文件和目录在云端硬盘中是相同的。

再做一次files.get

GET https://www.googleapis.com/drive/v3/files/0B5pJkOVaKccEYW5lVHBKd1Zwc28?key={YOUR_API_KEY}

结果

{ "kind": "drive#file", "id": "0B5pJkOVaKccEYW5lVHBKd1Zwc28", "name": "SiteBackups", "mimeType": "application/vnd.google-apps.folder" }

恭喜,您比我们 officially announced it 早几个小时找到了 Google Drive API 版本 3。 :)

在 v3 中,不再有 parents 集合。相反,您通过执行 files.get with the child's ID. Ideally, you would use the fields parameter 将响应限制为仅 parent(s) 来获得 parents 属性。注意:一个文件可能有多个 parent,因此请准备好处理多个 parent。

您可以通过查看 migration cheat sheet.

了解从 v2 到 v3 的变化

如果你是用SDK来做的

        $service    = new Google_Service_Drive($client);

        // Print the names and IDs.
        $optParams = array(
            'fields'    => 'nextPageToken, files(id, name, fileExtension, trashed, webViewLink, mimeType, ownedByMe, parents, fileExtension, webContentLink)',
            'q'         => $folderId . " in parents" // pass the folder id as a string to the variable $folderId
        );

        $results = $service->files->listFiles($optParams);
        $results = $results->getFiles();

像下面这样使用它

let fileMetadata = {
    'name': new Date()+'-dbBackup.zip',
    'parents':  [  '1193XW7zIzQHZHRIzkYzbFqwDC-ruGb-TE'  ]
};