簡體   English   中英

獲取要刪除的已創建文件的文件 ID - Google Drive API

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

我正在嘗試使用谷歌驅動器 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;

我查看了谷歌驅動器 api 但找不到任何這樣的方法。 我想要上傳文件的 id 的原因是,如果我想使用該特定 id,我可以刪除文件最終,這是我正在嘗試編寫的 function:

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

}

這樣,如果給定文件夾中碰巧有同名文件,我們就會受到保護並刪除正確的文件。

我相信你的目標如下。

  1. 您想使用 googleapis for php 檢索 Google Drive 上上傳文件的文件 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 Drive,所有文件都有唯一的文件 ID。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM