问题描述
我正在尝试使用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) {
}
这样,如果在给定的文件夹中碰巧有相同名称的文件,我们将受到保护并删除正确的文件。
解决方法
我相信您的目标如下。
- 您要使用googleapis for php在Google云端硬盘上检索上传文件的文件ID。
- 当
$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。