我的目的是能够上传已在Google Drive上可用的新版本。
我已经以https://develovelers.google.com/drive/v2/reference/reference/files/update#examples的方式开始了PHP示例。
function updateFile($fileID, $uploadFile) {
try {
$file = $this->service->files->get($fileID);
$content = file_get_contents($uploadFile);
$file = $this->service->files->update($fileID, $file, array(
'data' => $content,
));
printf("Updated File ID: %sn", $file->getId());
} catch (Exception $e) {
echo get_class($e), ': ', $e->getMessage(), PHP_EOL;
}
}
结果我得到了
Google_Service_Exception: {
"error": {
"errors": [
{
"domain": "global",
"reason": "fieldNotWritable",
"message": "The resource body includes fields which are not directly writable."
}
],
"code": 403,
"message": "The resource body includes fields which are not directly writable."
}
}
我不明白有问题的领域是什么。我唯一更改的是文件的实际内容,它都不是元数据。
有什么想法是怎么了?
请查看$file = $this->service->files->get($fileID)
返回的$file
对象。我的猜测是,它包含一堆在https://developers.google.com/drive/v3/reference/ferfere/files/files
因此,当您发送相同的$文件对象以在$file = $this->service->files->update($fileID, $file,
中驱动时,驱动器会反对它们的存在。由于您仅更新内容,因此您可以发送一个空的元数据对象代替$文件。
另外,正如Siawa所指出的那样,您所关注的快速启动标记为V2,但是如果您使用的是最新的PHP库,则可能已更改为v3。是否会影响快速启动是任何人的猜测。