Я пытаюсь опубликовать составной запрос к API, который содержит как изображение, так и массив, содержащий сведения об этом изображении. Этот запрос работает через Postman, но его реализация с использованием CURL в PHP оказывается трудной.
Заголовки довольно просты - они просто содержат $ auth_token, который был ранее получен из других вызовов API.
$headers = array('Content-Type: multipart/form-data', 'Authorization-token: ' . $auth_token));
Фактическое тело данных формы выглядит следующим образом - создается экземпляр CurlFile следующим образом и массив с информацией о файле
$fields = array(
"data" => new CurlFile('C://images/15.jpg', 'image/jpg', '15.jpg'),
"entityFile" => array(
"fileTypeID"=> "server generated id",
"fileSize"=> 23453,
"entityID"=> "another server generated id",
"fileDateUtc"=> "2018-02-26T00:00:00",
"fileName"=> "15",
"fileExtension"=> "jpg"
)
);
Наконец, я установил параметры для данных, которые будут отправлены
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$result = curl_exec($ch);
Я также пытался прикрепить изображение в виде строки в кодировке base64, но изображение на сервере не изменилось.
У меня вопрос: есть ли что-то явно не так с моим массивом $ fields, что может привести к его сбою? Я подозреваю, что может быть проблема с реальным файлом, но это трудно определить, так как фактическая возвращаемая ошибка ...
The requested URL returned error: 400 Bad Request
Спасибо