Гузл ~ 6.0 multipart и form_params

Я пытаюсь загрузить файл и отправить параметры сообщения в одно и то же время следующим образом:

$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.