tarang19's avatar

Photo upload not working on laravel 7

I want to upload image but its get entry in database but file not move to public folder any one have idea what is the issue

my code

<form method="POST" action="{{ route('preference.create.step.two.post') }}" enctype="multipart/form-data">
                            	@csrf
<div class="form-group">
    <div class="form-check">
      <p>Allowed file extensions - jpeg, jpg, jpe, bmp, png, gif<br/>
Maximum file size - 1MB</p>
      <input type="file" class="file-input" id="photo" name="photo">
      @if($current_user_data){
       {{ $current_user_data->photo }}
                                        }@endif
      @error('photo')
                                <p class="help text-danger">{{ $errors->first('photo') }}</p>
                                @enderror
    </div>
  </div>
</form>

controller

$active_user = User::find(Auth::user()->id);
        
        $validate = $request->validate([
            'firstname' => ['required'],
            'middlename' => ['required'],
            'lastname' => ['required'],
            'mothername' => ['required'],
            'gender' => ['required'],
            'birthday' => ['required'],
            'birthmonth' => ['required'],
            'birthyear' => ['required'],
            'mobile' => ['required'],
            'state' => ['required'],
            'pincode' => ['required'],
            'address' => ['required'],
            'aadhar' => ['nullable'],
            'pan' => ['nullable'],
            'religion' => ['required'],
            'cast' => ['required'],
            'tongue' => ['nullable'],
            'blood' => ['required'],
            'photo' => ['nullable'],
            'enrollment' => ['required'],
            'uid' => ['required'],
            'category' => ['required'],
        ]);

        if($request->hasFile('photo')){
            $photo = $request->file('photo');
            $new =  $photo->getClientOriginalName();
            $photo->move(public_path('images'), $new);

            $validate['photo'] = $new;
        };

        $validate['user_id'] = $active_user->id;
        $validate['is_saved'] = 1;

        Personal::updateOrCreate(['user_id' => $active_user->id], $validate);
0 likes
2 replies
SilenceBringer's avatar
Level 55

Hi @tarang19 . replace

 $photo->move(public_path('images'), $new);

to

$photo->storeAs('images', $new, ['disk' => 'root']);

Also please be sure you not rewrited "root" in cofig/filesystems.php

'disks' => [
    // other stuff here

    'root' => [
        'driver' => 'local',
        'root' => public_path(),
    ],
],
Snapey's avatar

Don't save the images with their original name. Two users can overwrite each others pictures, either accidentally or maliciously. Create a random filename or use the original name but prefix the userid.

2 likes

Please or to participate in this conversation.