Я создал одну папку, и внутри этой папки я создал 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();
}
}
Заранее спасибо.
Исходя из этого Так ответь, на v3, используя update
вот так выкидывает ошибку fieldNotWritable
.
Решение состоит в том, чтобы создать пустой
File
установка только новых значений:File newContent = new File(); newContent.setTrashed(true); service.files().update(fileId, newContent).execute();
Замечания:
File
относится кcom.google.api.services.drive.model.File
(это неjava.io.File
).
Кроме того, исходя из этого документация, Вы можете видеть, что общий доступ не является доступным для записи полем. Вы можете поделиться файлом, добавив новое разрешение, и вы можете проверить, был ли файл предоставлен в общий доступ, прочитав свойство shared. Но говорить о том, что файл является общим, кроме как путем его общего использования, не имеет смысла. [Источник.]
Других решений пока нет …