PHP Post Request с CURL - изображение + массив

Я пытаюсь отправить составной запрос к 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

Спасибо

В плохом запросе должно быть больше информации, обычно они сообщают вам причину. внимательно проверьте свой ответ

Enoch 02.05.2018 04:42

Спасибо - если я error_log (var_export ($ result, true)); Я получаю эту ошибку. Есть ли еще что-нибудь, что я могу попытаться получить больше информации?

Tuxino 02.05.2018 04:49

if (curl_error ($ c)) {echo 'error:'. curl_error ($ c); } Это даст вам ошибку curl. Но также проверьте свои инструменты разработчика (F12), иногда браузер выводит сообщения об ошибках вверху страницы.

Enoch 02.05.2018 04:51

curl_error ($ c) и инструменты разработчика (Chrome) дают ту же ошибку

Tuxino 02.05.2018 04:55

какой API вы используете? есть ошибка с информацией, которую вы отправляете API, из-за которой вы получаете 400.

Enoch 02.05.2018 05:02

Используемый API в основном неизвестен публике, и я, к сожалению, не уполномочен размещать его здесь.

Tuxino 02.05.2018 05:15
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
77
0

Другие вопросы по теме