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.
Laisser un commentaire
Votre adresse email ne sera pas publiée. L'email est facultatif. Les champs obligatoires sont marqués *