Как правильно настроить параметры Curl для загрузки многочастного файла на Google Drive с помощью Filemaker 16-18 - PullRequest
0 голосов
/ 08 апреля 2020

Документация Google объясняет, что вызов должен включать:

POST https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart HTTP/1.1
Authorization: Bearer [YOUR_AUTH_TOKEN]
Content-Type: multipart/related; boundary=foo_bar_baz
Content-Length: [NUMBER_OF_BYTES_IN_ENTIRE_REQUEST_BODY]

--foo_bar_baz
Content-Type: application/json; charset=UTF-8

{
  "name": "myObject"
}

--foo_bar_baz
Content-Type: image/jpeg

[JPEG_DATA]
--foo_bar_baz--

Моя проблема в том, что я не могу понять, как преобразовать это в дружественный к FileMaker язык cURL и передать его как переменную $ curlOptions, так что вызов POST может быть заполнен правильно. Мне удалось загрузить файл без метаданных, но я бы хотел сделать POST составной частью. Мои $ curlOptions установлены следующим образом:

ПРИМЕЧАНИЯ

  1. Content-Length установлен как 119, потому что это длина, которую я получил, когда я запускаю POST в Почтальон без проблем
  2. Переменная $ метаданные - это json = {"mimeType": "image / jpeg", "name": "file.jpeg"}

Моя переменная $ curlOptions установлена ​​следующим образом:

"-X POST"
& " -H \"Authorization: Bearer "  & API_tokens::access_token & "\""
& " -H \"Content-Length: 119\""
& " -H \"Content-Type: multipart/related; boundary=foo_bar_baz\""
& " --foo_bar_baz Content-Type: application/json; charset=UTF-8"
& " --data-binary @$metadata"
& " --foo_bar_baz Content-Type: image/jpeg"
& " --data-binary @$file"
& " --foo_bar_baz--"

Я почти уверен, что неправильно обрабатываю тело внутри границы ...

Любая помощь будет очень ценится.

Большое спасибо,

Луис

Отредактировано до предыдущего кода

"-X POST"
& " -H \"Authorization: Bearer "  & API_tokens::access_token & "\""
& " -H \"Content-Type: multipart/related; boundary=foo_bar_baz\""
& " -H \"Content-Length: 119\"" & Char(13)&Char(10)& Char(13)&Char(10)


& "--data-binary \"--foo_bar_baz" & Char(13)&Char(10) &
"Content-Type: application/json; charset=UTF-8" & Char(13)&Char(10) &
"--data-binary @$metadata" & Char(13)&Char(10) & Char(13)&Char(10) &
"--foo_bar_baz" & Char(13)&Char(10)
& "Content-Type: image/jpeg" & Char(13)&Char(10) & Char(13)&Char(10)
& "--data-binary @$file\"" & Char(13)&Char(10)
& "--foo_bar_baz--"

Таким образом, это соответствует как вызов выглядит в документации Google API, но все равно не повезло: (

1 Ответ

0 голосов
/ 09 апреля 2020

Мои знания FileMaker низки, но ваши $ curlOptions не включают символ новой строки после границ. Это может быть так. Я знаю, что в FileMaker есть специальный символ, позволяющий указать новую строку. Из включенной ссылки на документацию видно, что в определенных точках относительно границы имеются пустые строки.

...