Написание документа Google Docs в формате Google (Json) не работает - PullRequest
0 голосов
/ 03 июля 2019

Я прочитал документ с помощью API Google Docs с documents.get и сохранил возвращенный Json в файл.

Теперь мне нужно загрузить сохраненный файл обратно в Google. Я делаю это, как описано в Загрузка файлов - Выполните возобновляемую загрузку раздел. Но мои запросы терпят неудачу с ошибкой 400 Bad Request:

POST https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable&fields=id HTTP/1.1
X-Upload-Content-Type: application/vnd.google-apps.document
X-Upload-Content-Length: 11861
User-Agent: My Client
Authorization: Bearer XXXXX
Content-Type: application/json; charset=utf-8
Host: www.googleapis.com
Content-Length: 74
Accept-Encoding: gzip, deflate

{"mimeType":"application/vnd.google-apps.document","name":"General1.gdoc"}

HTTP/1.1 200 OK
X-GUploader-UploadID: AEnB2UrINNZDf13bOH9NvoZqXqX1K4reJrqA-0i2mEWNUJaSJKJVD2gcVd_EE6AP7WmefpQnL8aLu5iROcWBCxnKu3RVHlMuSQ
Location: https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable&fields=id&upload_id=AEnB2UrINNZDf13bOH9NvoZqXqX1K4reJrqA-0i2mEWNUJaSJKJVD2gcVd_EE6AP7WmefpQnL8aLu5iROcWBCxnKu3RVHlMuSQ
Vary: Origin
Vary: X-Origin
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: Mon, 01 Jan 1990 00:00:00 GMT
Date: Thu, 04 Jul 2019 20:53:06 GMT
Content-Length: 0
Server: UploadServer
Content-Type: text/html; charset=UTF-8
Alt-Svc: quic=":443"; ma=2592000; v="46,43,39"


PUT https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable&fields=id&upload_id=AEnB2UrINNZDf13bOH9NvoZqXqX1K4reJrqA-0i2mEWNUJaSJKJVD2gcVd_EE6AP7WmefpQnL8aLu5iROcWBCxnKu3RVHlMuSQ HTTP/1.1
User-Agent: My Client
Authorization: Bearer XXXX
Content-Range: bytes 0-11860/11861
Host: www.googleapis.com
Content-Length: 11861
Accept-Encoding: gzip, deflate

{
   "title": "General1",
   "body": {
      "content": [
       {
         "endIndex": 1,
         "sectionBreak": {
           "sectionStyle": {
           "columnSeparatorStyle": "NONE",
           "contentDirection": "LEFT_TO_RIGHT"
           ...
}

HTTP/1.1 400 Bad Request
X-GUploader-UploadID: AEnB2UrINNZDf13bOH9NvoZqXqX1K4reJrqA-0i2mEWNUJaSJKJVD2gcVd_EE6AP7WmefpQnL8aLu5iROcWBCxnKu3RVHlMuSQ
Vary: Origin
Vary: X-Origin
Content-Type: application/json; charset=UTF-8
Content-Length: 171
Date: Thu, 04 Jul 2019 20:53:06 GMT
Server: UploadServer
Alt-Svc: quic=":443"; ma=2592000; v="46,43,39"

{
"error": {
"errors": [
{
"domain": "global",
"reason": "badRequest",
"message": "Bad Request"
}
],
"code": 400,
"message": "Bad Request"
}
}

Я также пытался отправить POST с заголовком X-Upload-Content-Type: application / json, но результат тот же.

Есть идеи, почему вышеупомянутый запрос не выполняется?

К сожалению, я не могу использовать функцию documents.create () для загрузки документа, поскольку он создает только пустой документ без содержимого.

Обратите внимание, что я не могу использовать операции экспорта Google, потому что мне нужно избегать преобразования документов json-> docx-> json, чтобы избежать нарушения форматирования.

UPDATE: Вот мой код загрузки Google Doc в C #. У меня работает просто файл. В результате Google Doc Json сохраняется в файле:

var gdoc = docsService.Documents.Get("1g0jD2870BOtQ7pw8NNRb__Mlku6V-dlBmVpkiiK7WKg");
using (var gdocStream = gdoc.ExecuteAsStream())
{
    using (var file = new System.IO.FileStream("D:\\General1.gdoc", FileMode.CreateNew))
    {

        gdocStream.CopyTo(file);
    }
}

Вот мой код загрузки, который не работает:

var fileMetadata = new File()
{
    Name = "General1.gdoc",
    MimeType = "application/vnd.google-apps.document"
};
FilesResource.CreateMediaUpload request;
using (var stream = new System.IO.FileStream("D:\\gdoc.gdoc", System.IO.FileMode.Open))
{
     request = driveService.Files.Create(fileMetadata, stream, "application/vnd.google-apps.document");
     request.Fields = "id";
     var response = request.Upload();
}
var file = request.ResponseBody
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...