Google Drive API PHP - 更新txt文件的内容

时间:2016-09-30 15:25:18

标签: php google-drive-api drive

我创建了一个文件夹,在该文件夹中我创建了2个文本文件,里面有一些文本。我也可以列出文件并在其中获取文本而不会出现问题。现在我正在尝试更新该文件内的文本,但我总是收到此错误:

"domain": "global",
"reason": "fieldNotWritable",
"message": "The resource body includes fields which are not directly writable."

我创建了一个类似https://developers.google.com/drive/v2/reference/files/update中提供的函数。

我使用此示例是因为在版本v3中,Google没有提供任何示例,我无法找到任何可以帮助我的内容。我的功能如下。

function updateFile ($service, $fileId, $newTitle, $newDescription, $newMimeType, $text) {
    try {
        // First retrieve the file from the API.
        $file = $service->files->get($fileId);

        // File's new metadata.
        $file->setName($newTitle);
        $file->setDescription($newDescription);
        $file->setMimeType($newMimeType);

        // File's new content.
        $additionalParams = array(
            'data' => $text,
            'uploadType' => 'media'
        );

        // Send the request to the API.
        $updatedFile = $service->files->update($fileId, $file, $additionalParams);
        return $updatedFile;
    } catch (Exception $e) {
        print "An error occurred: " . $e->getMessage();
    }
}

提前谢谢。

1 个答案:

答案 0 :(得分:0)

基于此SO answer,在第3版中,使用return shampoo_instructions(num_cycles) 之类的内容会引发错误 update

  

解决方案是仅创建一个空的fieldNotWritable设置新值:

File
     

注意:File newContent = new File(); newContent.setTrashed(true); service.files().update(fileId, newContent).execute(); 是指File(不是com.google.api.services.drive.model.File)。

此外,根据此documentation,您可以看到共享不是可写字段。您可以通过添加新权限来共享文件,并且可以通过读取共享属性来检查文件是否已共享。但是说文件是共享的,除了通过实际共享它,没有任何意义。 [Source.]