Мне нужно отправить запрос POST через PHP cURL. Он должен включать как файл, так и параметр массива. Необработанная команда curl должна выглядеть так:
curl "https://the.url.com"
-F file = "@/path/to/file.xml"
-F 'list_item[]=foo'
-F 'list_item[]=bar'
К сожалению, параметр list_item[] не может иметь ключей (например, list_item[0], list_item[1] и т. д.), иначе сервер выдаст ошибку.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://the.url.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
'file' => curl_file_create($file),
'list_item' => [
'foo',
'bar'
]
]);
$response = curl_exec($ch);
Должно быть, это создает неправильную команду curl, потому что она также отклоняется.
Кто-нибудь может помочь?
@dWinder, похоже, нарушается параметр файла. Сервер думает, что я не загружаю файл.
Не могли бы вы использовать переменную сеанса?
@Perelx Мне не принадлежит сервер/приложение, на которое я пишу. В конце концов, владелец разрешил мне использовать параметры строки запроса. Так что для меня это больше не проблема.






Я думаю, вам нужно использовать
http_build_query- посмотрите на это