如何在谷歌驱动器中使用php的api重命名文件或文件夹?



我正在尝试使用php中的api:v2重命名谷歌驱动器中的文件。但是,据说用于重命名文件的每个功能补丁都不存在于google的"google apicclient -servicessrcDriveResource drivers .php"文件中的驱动器文件中。我在其他文件里找过,但没有。现在我如何重命名我的驱动器中的文件和文件夹。我确实试过改变一些。

我从文档中得到的代码是:-

/**
* Rename a file.
*
* @param Google_Service_Drive $service Drive API service instance.
* @param string $fileId ID of the file to rename.
* @param string $newTitle New title for the file.
* @return Google_Service_Drive_DriveFile The updated file. NULL is returned if
*     an API error occurred.
*/
function renameFile($service, $fileId, $newTitle) {
try {
$file = new Google_Service_Drive_DriveFile();
$file->setTitle($newTitle);
$updatedFile = $service->files->patch($fileId, $file, array(
'fields' => 'title'
));
return $updatedFile;
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}
}

给出的错误:

PHP Fatal error:  Uncaught Error: Call to undefined method GoogleServiceDriveDriveFile::setTitle() in .GoogleDrive.php:153
Stack trace:
#0 .test.php(22): GoogleDrive->renameFile('drive_Id_...', 'test2.txt')
#1 {main}
thrown in .GoogleDrive.php on line 153
Fatal error: Uncaught Error: Call to undefined method GoogleServiceDriveDriveFile::setTitle() in .GoogleDrive.php:153
Stack trace:
#0 .test.php(22): GoogleDrive->renameFile('drive_Id_...', 'test2.txt')
#1 {main}
thrown in .GoogleDrive.php on line 153

很简单。

填充代码为:

/**
* Rename a file.
*
* @param Google_Service_Drive $service Drive API service instance.
* @param string $fileId ID of the file to rename.
* @param string $newTitle New title for the file.
* @return Google_Service_Drive_DriveFile The updated file. NULL is returned if
*     an API error occurred.
*/
function renameFile($service, $fileId, $newTitle) {
try {
$file = new Google_Service_Drive_DriveFile();
$file->setName($newTitle);
$updatedFile = $service->files->update($fileId, $file);
return $updatedFile;
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}
}

你需要改变的部分是:

  • ->patch改为->update,->setTitle改为->setName

  • array('fields' => 'title'));您需要更改删除此。这将给出错误:

    An error occurred: {
    "error": {
    "errors": [{
    "domain": "global",
    "reason": "invalidParameter",
    "message": "Invalid field selection title",
    "locationType": "parameter",
    "location": "fields"
    }],
    "code": 400,
    "message": "Invalid field selection title"
    }
    

    }

这对文件和文件夹都有效。

Google Drive V3 PHP API文档是稀疏和神秘的。

使用该版本的API执行相同的文件重命名操作:

$file = new Google_Service_Drive_DriveFile();
$file->setName($newTitle);
$updatedFile = $service->files->update($fileId, $file, array('fields' => 'name'));

最新更新