Home > Net >  How to upload and save image in register form?
How to upload and save image in register form?

Time:12-24

This code stores all the data in the database. But the photo is neither uploaded nor saved.

register.blade.php

<form method="POST" action="{{ route('register') }}" enctype="multipart/form-data">
    @csrf    <div >
    <label for="image " >{{ __('Image') }}</label>

    <div >
        <input id="image " type="file"  name="image " value="{{ old('image ') }}"   autocomplete="image " autofocus>

        @error('image ')
        <span  role="alert">
                <strong>{{ $message }}</strong>
            </span>
        @enderror
    </div>
</div>

RegisterController.php

protected function create(array $data)
{
    $path = request()->file('image') ?? null;
    if (request()->hasFile('image'))
    {
        $file = request()->file('image');
        $name = time();
        $extension = $file->getClientOriginalExtension();
        $fileName = $name . '.' . $extension;
        $path = $file->storeAs('images/users', $fileName, 'public');
    }
    return User::create([
        'name' => $data['name'],
        'first_name' => $data['first_name'],
        'last_name' => $data['last_name'],
        'email' => $data['email'],
        'mobile' => $data['mobile'],
        'address' => $data['address'],
        'postal_code' => $data['postal_code'],
        'state_id' => $data['state_id'],
        'city_id' => $data['city_id'],
        'password' => Hash::make($data['password']),
        'image' => $path
    ]);
}

When I add dd.

protected function create(array $data)
{
    $path = request()->file('image');
    dd($path);

I see null

CodePudding user response:

You have space within the image name declaration. Just remove the space and it should work.

So just replace,

<input id="image " type="file"  name="image " value="{{ old('image ') }}"   autocomplete="image " autofocus>

WITH

<input id="image" type="file"  name="image" value="{{ old('image') }}"   autocomplete="image" autofocus>

It should work. Let me know the results.

  • Related