Guzzle is a PHP HTTP Client for sending HTTP requests to APIs. But sending multiple files with a single request sometimes bring on a lot of complexity and people get confused in sending arrays of data within an array for a multipart form, quite confusing.
This snippet will explain how to send multiple files or images with a single request through Guzzle HTTP client with ease. So let's dive straight in the code.
$output = [];
foreach ( $images['image'] as $key => $value ) {
if ( ! is_array( $value ) ) {
$output[] = [
'name' => 'image[]',
'contents' => fopen( $value->getPathname(), 'r' ),
'filename' => $value->getClientOriginalName()
];
continue;
}
}
$output [] =
[
'name' => 'field_name',
'contents' => \request()->get( 'field_name' )
];
$output [] = [
'name' => 'field_name_2',
'contents' => \request()->get( 'field_name_2' )
];
$output [] = [
'name' => 'field_name_3',
'contents' => \request()->get( 'field_name_3' )
];
$client = new Client( [ 'base_uri' => "http://api_url.dev/", ] );
$response = $client->request( 'POST', 'api/endpoint', [ 'headers' => [ 'Authorization' => $token ], 'multipart' => $output ] ); $data = \GuzzleHttp\json_decode( $response->getBody() );
Try it out and let us know in the comment section if you faced any issue. Cheers!
Do follow us on Twitter.
Deja un comentario
Su dirección de correo electrónico no será publicada. El correo electrónico es opcional. Los campos obligatorios están marcados con *