获取要删除的已创建文件的文件 ID- Google 驱动器 API

Getting the file ID of a Created File To Delete- Google Drive API

我正在尝试获取使用 google 驱动器 API 创建的文件的文件 ID,以便我可以使用它来删除文件。这是代码:

$file = new Google_Service_Drive_DriveFile();
$file->setName($fileName);
$file->setDescription('Volunteer Hours');
$file->setParents(array($folderId));
$data = file_get_contents($filePath);
$createdFile = $this->service->files->create($file, array(
    'data' => $data,
    'uploadType' => 'multipart'
));

是否有某种 .id 方法可以让我说:

$createdFileID = $createdFile.id;

我查看了 google 驱动器 api 但没能找到任何这样的方法。我想要上传文件的 ID 的原因是,如果我想使用该特定 ID,我可以删除文件 最终,这是我要编写的函数:

// Deletes a specific file from a specific folder
function deleteFile($folderName, $fileID) {

}

这样,如果给定文件夹中恰好有同名文件,我们就会受到保护并删除正确的文件。

我相信你的目标如下。

  1. 您想使用 php 的 googleapis 在 Google 驱动器上检索上传文件的文件 ID。
  2. $fileName 的文件名存在于 $folderName 的特定文件夹中时,您想删除现有文件。

问题 1 的答案:

这样的话,下面的修改怎么样?

发件人:

$createdFile = $this->service->files->create($file, array(
    'data' => $data,
    'uploadType' => 'multipart'
));

收件人:

$createdFile = $this->service->files->create($file, array(
    'data' => $data,
    'uploadType' => 'multipart'
));
$createdFileID = $createdFile->getId();  // Added
  • 这样就可以通过$createdFileID.
  • 获取上传文件的文件ID

问题 2 的答案:

当您想使用function deleteFile($folderName, $fileName) {}处的文件名和文件夹名删除文件时,下面的示例脚本如何?

示例脚本:

function deleteFile($folderName, $fileName) {
    $client = getClient();
    $drive = new Google_Service_Drive($client);

    $res1 = $drive->files->listFiles(array("q" => "name='{$folderName}' and trashed=false"));
    $folderId = $res1->getFiles()[0]->getId();

    $res2 = $drive->files->listFiles(array("q" => "name='{$fileName}' and '{$folderId}' in parents and trashed=false"));
    if (count($res2->getFiles()) == 0) {
        // When the filename of $fileName is not existing,
        // do something
    } else {
        $fileId = $res2->getFiles()[0]->getId();
        $drive->files->delete($fileId);
    }
}
  • 在这种情况下,当 $fileName 的文件名存在于 $folderName 的特定文件夹中时,现有文件将被删除。

参考文献:

已添加:

当你想使用文件ID删除文件时,可以使用下面的脚本。

function deleteFile($fileID) {
    $client = getClient();
    $drive = new Google_Service_Drive($client);
    $drive->files->delete($fileID);
}
  • 在这种情况下,不需要使用$folderName。因为在 Google 驱动器上,所有文件都有唯一的文件 ID。