2015-08-20 3 views
0

Я хочу загрузить файл с параметром данных, но он не работает.Не удается загрузить файл с данными guzzle

$client->post('http://xxx/', [ 
    'json' => [ 
     'abc' => 'abc' 
    ], 
    'multipart' => [ 
     [ 
      'name'  => 'file', 
      'contents' => fopen('xxx.sh', 'r') 
     ] 
    ], 
]); 

Это только сообщение параметра abc. И он может публиковать файл, когда я удаляю параметр json.
Я хочу загрузить файл и опубликовать некоторые данные в одном запросе. Как я могу это сделать?

+0

FYI. Я открыл вопрос о том, как смешивать типы запросов, отличные от form_params. https://github.com/guzzle/guzzle/issues/1386 – Brady

ответ

0

Примечание multipart не может использоваться с опцией form_params. Вам нужно будет использовать тот или иной. Используйте form_params для запросов application/x-www-form-urlencoded и multipart для запросов multipart/form-data.

от: http://docs.guzzlephp.org/en/latest/request-options.html#multipart

сделать это:

$ ответ = $ client-> пост ('http://example.com/api', [ 'многослойную' => [ [ 'имя' => 'изображение' , 'содержание' => Еореп ('/ путь/к/изображений', 'г') ], [ => 'имя' 'имя', 'содержание' => 'Пример имени' ] ] ]);

от: Guzzle ~6.0 multipart and form_params

сделано.

+0

Он не использует form_params, он использует параметр запроса JSON. http://docs.guzzlephp.org/en/latest/request-options.html#json – Brady

0

Чтобы отправить информацию JSON, ее необходимо отправить с сообщением Multipart. Multipart нельзя смешивать с любым другим запросом на выбор тела. Проверка от владельца Guzzle: https://github.com/guzzle/guzzle/issues/1386

Смежные вопросы