how to upload image using http client laravel to API

3.8k Views Asked by At

I want to update/upload an image using http client laravel. I did update the data but the image are not updated. the API are blob type. I try to use form-data file in postman and it did work. but I don't know why it's not working in my laravel app.

this is my code

$image = $request->file('profile_image');
        if ($image != null) {
            $contents = $image->openFile()->fread($image->getSize());
        }
        $response = Http::withToken($request->session()->get('user'))->acceptJson()->attach('image', file_get_contents($image))->post("https://voice.infidea.id/api/gateway/update-user", [
            'id' => $user['id'],
            'name' => $request->name,
            'email' => $request->email,
            'contact' => $request->contact
        ]);

I try to use the $content also but still did not work. only the string data that updated.

2

There are 2 best solutions below

0
On

You need to specify complete file path for file_get_contents(), change to this

file_get_contents($request->file('profile_image')->getRealPath()));
// or
file_get_contents($request->profile_image->path());

You just place the temp path or complete path of image

$contents = file_get_contents($request->file('profile_image')->getRealPath());

$response = Http::withToken($request->session()->get('user'))
    ->acceptJson()
    ->attach('image', $contents)
    ->post("https://voice.infidea.id/api/gateway/update-user", [
            'id' => $user['id'],
            'name' => $request->name,
            'email' => $request->email,
            'contact' => $request->contact
    ]);
0
On

I think value of $image = $request->file('profile_image'); is not set bcoz in postman you use image.