PHP Post Request с CURL - изображение + массив - PullRequest
0 голосов
/ 02 мая 2018

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

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...