Image not saving in Database in Laravel

Viewed 454

I am trying to store image into database after it has been converted to base64 and also decoded. The image stores inside the Storage path but does not save into mysql database. What am i doing wrong?

public function updateProfileImage(Request $request)
    {
        $user = auth('api')->user();

        $image = $request->input('image'); // image base64 encoded
        preg_match("/data:image\/(.*?);/",$image,$image_extension); // extract the image extension
        $image = preg_replace('/data:image\/(.*?);base64,/','',$image); // remove the type part
        $image = str_replace(' ', '+', $image);
        $imageName = 'profile' . time() . '.' . $image_extension[1]; //generating unique file name;
        Storage::disk('public')->put($imageName,base64_decode($image));        
        $user->update($request->all());

}
3 Answers

Try this:

$user = auth('api')->user();

if ($request['image']) {
    $data = $request['image'];

    list($type, $data) = explode(';', $data);
    list(, $data)      = explode(',', $data);
    $image = base64_decode($data);
    $photoName = 'profile' . time() . '.' . $image_extension[1];
    $request['image'] = $photoName;

    Storage::disk('public')->put($photoName, $image);
    $user->update($request->all());
}

I had to do this

public function updateProfileImage(Request $request)
    {
        $user = auth('api')->user();

        $image = $request->input('image'); // image base64 encoded
        preg_match("/data:image\/(.*?);/",$image,$image_extension); // extract the image extension
        $image = preg_replace('/data:image\/(.*?);base64,/','',$image); // remove the type part
        $image = str_replace(' ', '+', $image);
        $imageName = 'profile' . time() . '.' . $image_extension[1]; //generating unique file name;
        Storage::disk('public')->put($imageName,base64_decode($image));


        $user->update($request->except('image') + [
            'profilePicture' => $imageName
        ]);
}

and it worked

Related