Я пытаюсь загрузить файл и отправить параметры сообщения в одно и то же время следующим образом:
$response = $client->post('http://example.com/api', [ 'form_params' => [ 'name' => 'Example name', ], 'multipart' => [ [ 'name' => 'image', 'contents' => fopen('/path/to/image', 'r') ] ] ]);
Однако мои поля form_params игнорируются, и в моем почтовом теле присутствуют только многочастные поля. Могу ли я отправить оба с помощью gzzle 6.0?
Я столкнулся с той же проблемой. Вам нужно добавить form_params в многочастный массив. Где «имя» – это имя элемента формы, а «содержимое» – это значение. Код примера, который вы предоставили, будет следующим:
$response = $client->post('http://example.com/api', [ 'multipart' => [ [ 'name' => 'image', 'contents' => fopen('/path/to/image', 'r') ], [ 'name' => 'name', 'contents' => 'Example name' ] ] ]);
Я тоже туда попал, но, к сожалению, это не сработает, если у вас многомерный массив params. Единственный способ заставить его работать, если вы отправляете form_paramaters в качестве параметров запроса в массиве:
$response = $client->post('http://example.com/api', [ 'query' => [ 'name' => 'Example name', ], 'multipart' => [ [ 'name' => 'image', 'contents' => fopen('/path/to/image', 'r') ] ] ]);
Согласно официальной документации, параметры multipart и form_params не могут использоваться одновременно. Вам нужно будет использовать тот или иной.
Используйте form_params для запросов application / x-www-form-urlencoded и multipart для запросов multipart / form-data.