获取要删除的已创建文件的文件ID-Google Drive API 发件人:收件人:示例脚本:

问题描述

我正在尝试使用Google Drive API获取已创建文件的文件ID,以便随后可以使用该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 Drive API,但找不到任何此类方法。我想要上传文件的ID的原因是,如果我想使用该特定ID,可以删除文件 最终,这是我要编写的函数:

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

}

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

解决方法

我相信您的目标如下。

  1. 您要使用googleapis for php在Google云端硬盘上检索上传文件的文件ID。
  2. $fileName的特定文件夹中存在$folderName的文件名时,您要删除现有文件。

问题1的答案:

在这种情况下,如何进行以下修改?

发件人:

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

收件人:

$createdFile = $this->service->files->create($file,'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。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...