Php 获取要删除的已创建文件的文件ID-Google Drive API

Php 获取要删除的已创建文件的文件ID-Google Drive API,php,google-api,google-drive-api,google-api-php-client,Php,Google Api,Google Drive Api,Google Api Php Client,我正在尝试使用GoogleDriveAPI获取一个创建文件的文件ID,这样我就可以使用它来删除文件。代码如下: $file = new Google_Service_Drive_DriveFile(); $file->setName($fileName); $file->setDescription('Volunteer Hours'); $file->setParents(array($folderId)); $data = file_get_contents($filePa

我正在尝试使用GoogleDriveAPI获取一个创建文件的文件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;
我已经查看了GoogleDrive api,但没有找到任何这样的方法。我想要上传文件的id的原因是,如果我想使用特定id,我可以删除文件 最后,这里是我试图编写的函数:

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

}

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

我相信您的目标如下

  • 您希望使用googleapis for php在Google Drive上检索上载文件的文件ID
  • $filename
    的文件名存在于
    $folderName
    的特定文件夹中时,您希望删除现有文件
  • 对问题1的答复: 在这种情况下,下面的修改如何

    发件人: 致:
    • 这样,可以使用
      $createdFileID
      检索上载文件的文件ID
    对问题2的答复: 当您想在
    函数deleteFile($folderName,$filename){}
    中使用文件名和文件夹名删除文件时,下面的示例脚本如何

    示例脚本:
    • 在这种情况下,当
      $filename
      的文件名存在于
      $folderName
      的特定文件夹中时,现有文件将被删除
    参考资料:
    补充: 如果要使用文件ID删除文件,可以使用以下脚本

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

    只是一个简单的问题。上面的操作很好,但是我想知道如果有两个同名的文件,delete函数将如何工作。是否有任何方法可以编写delete函数,以便它使用fileID而不是文件名进行删除?我对顶部的问题进行了编辑,因此deleteFile()采用$fileID而不是$fileName。谢谢@非常感谢你的回复。关于您的附加问题,我又添加了一个示例脚本。你能确认一下吗?如果我误解了你的新问题,我道歉。
    $createdFile = $this->service->files->create($file, array(
        'data' => $data,
        'uploadType' => 'multipart'
    ));
    $createdFileID = $createdFile->getId();  // Added
    
    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);
        }
    }
    
    function deleteFile($fileID) {
        $client = getClient();
        $drive = new Google_Service_Drive($client);
        $drive->files->delete($fileID);
    }