Документация 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 установлены следующим образом:
ПРИМЕЧАНИЯ
- Content-Length установлен как 119, потому что это длина, которую я получил, когда я запускаю POST в Почтальон без проблем
- Переменная $ метаданные - это 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, но все равно не повезло: (