获取要删除的已创建文件的文件 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) {
}
这样,如果给定文件夹中恰好有同名文件,我们就会受到保护并删除正确的文件。
我相信你的目标如下。
- 您想使用 php 的 googleapis 在 Google 驱动器上检索上传文件的文件 ID。
- 当
$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。
我正在尝试获取使用 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) {
}
这样,如果给定文件夹中恰好有同名文件,我们就会受到保护并删除正确的文件。
我相信你的目标如下。
- 您想使用 php 的 googleapis 在 Google 驱动器上检索上传文件的文件 ID。
- 当
$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。