
How to Send Images via Laravel Guzzle HTTP client
public function uploadImage(Request $request)
{
$request->validate([
'image' => 'required|image|mimes:jpeg,png,jpg,gif|max:2048',
]);
$image = $request->file('image');
$client = new Client();
try {
$response = $client->post('https://example.com/api/upload', [
'multipart' => [
[
'name' => 'image',
'contents' => fopen($image->getRealPath(), 'r'),
'filename' => $image->getClientOriginalName(),
],
[
'name' => 'user_id',
'contents' => 123,
],
],
]);
$responseData = json_decode($response->getBody(), true);
return response()->json([
'message' => 'Image uploaded successfully!',
'data' => $responseData,
], 200);
} catch (GuzzleException $e) {
return response()->json([
'message' => 'Failed to upload image.',
'error' => $e->getMessage(),
], 500);
}
}