Google Drive REST API v3, возобновляемая загрузка: тело ресурса включает в себя поля, которые нельзя напрямую записать - PullRequest
0 голосов
/ 23 мая 2018

ПРЕДИСЛОВИЕ: Другие вопросы похожи, однако я считаю, что это другая проблема.

Я пытаюсь обновить файл на Google Диске с помощью REST API v3 в JavaScript с использованием XHR, и яполучаю ошибку The resource body includes fields which are not directly writable..Чтобы избежать необходимости отладки кода, я просто пропущу фактический выполненный запрос cURL (я вынул все биты, связанные с безопасностью, и заменил их на [WHAT_THE_ITEM_IS]):

curl 'https://www.googleapis.com/upload/drive/v3/files/[FILE_ID]?uploadType=resumable&upload_id=[UPLOAD_ID]' -X PUT -H 'origin: http://[DOMAIN]' -H 'accept-encoding: gzip, deflate, br' -H 'accept-language: en-US,en;q=0.9' -H 'x-upload-content-type: application/json' -H 'accept: */*' -H 'content-type: application/json' -H 'content-range: bytes 0-26/27' -H 'referer: http://booklets-dev.resist.design:3000/' -H 'authority: www.googleapis.com' -H 'x-client-data: [CLIENT_DATA]' --data-binary $'{\n  "pages": [\n    []\n  ]\n}' --compressed

ПРИМЕЧАНИЕ.: Файл для загрузки / обновления является файлом JSON.

1 Ответ

0 голосов
/ 23 мая 2018

Хорошо, глупый, но простой ответ, вы НЕ хотите добавлять id к метаданным при первоначальном запросе, чтобы получить upload_id.

То есть проблема не имеет ничего общего сзапрос на загрузку и все, что нужно сделать с запросом к PATCH https://www.googleapis.com/upload/drive/v3/files/[FILE_ID]?uploadType=resumable, который сделан для получения заголовка Location, который вам действительно нужен для загрузки.Смотрите эту страницу: https://developers.google.com/drive/api/v3/resumable-upload

...