Google_service_exception:在Google Drive上将新版本上传时,FieldNotrable



我的目的是能够上传已在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。是否会影响快速启动是任何人的猜测。

相关内容

  • 没有找到相关文章

最新更新