PHP curl: Как передать параметр, имеющий синтаксис массива, в командной строке? - PullRequest
0 голосов
/ 14 апреля 2020

Извините за смутное название, я не использую curl достаточно часто, чтобы знать, что такое правильные термины. По сути, я пытаюсь преобразовать вызов curl из командной строки, который включает в себя загрузку файла, в сценарий PHP, используя curl_init et c.

Параметр curl командной строки имеет такие параметры, как -F query='...' -F variables[file]=@/mnt/d/temp/test.jpg. Вызов команды curl через командную строку работает нормально, поэтому серверная часть работает. Моя проблема, когда я пытаюсь это сделать, используя PHP. Моя проблема в том, что я не знаю, как правильно преобразовать синтаксис -F variables[file]=... в сторону PHP curl.

Учитывая это, я пытаюсь это сделать:

$query = '...';
$cFile = curl_file_create("/mnt/d/temp/test.jpg");
$variables = array("file" => $cFile);
$post = array('query' => $query,'variables' => $variables);
curl_setopt($chObj, CURLOPT_POSTFIELDS, $post);

К сожалению, это возвращает HTTP 500.

Я также пытаюсь заменить переменную $ cFile на $cFile = '@' . realpath("/mnt/d/temp/test.jpg");, тот же результат.

(Это также моя первая загрузка файла с использованием PHP curl, мой ссылка на приведенный выше код был таким SO вопрос: как загрузить файл с помощью curl с php)

Любой совет будет оценен. (Я бы сам это сделал в Google, но IDK соответствовал бы Google.)

1 Ответ

1 голос
/ 14 апреля 2020

Хорошо, очевидно, после публикации на SO, я выяснил это после того, как немного повозился, поэтому выкладываю свой собственный ответ.

Оказывается, я обдумывал это, предполагая, что синтаксис -F variables[file]=... был каким-то массива, когда на самом деле все, что мне нужно, это отправить переменную сообщения с именем variable[file]:

$cFile = curl_file_create("/mnt/d/temp/test.jpg");
$post = array('query' => $query,'variables[file]' => $cFile);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...