Error: can not delete a file picture when update form on laravel

Viewed 32

When I update form with a file picture I have some error like this:

ErrorException
Trying to get property 'file' of non-object

This is my controller file. I have copy paste from other controller and I think it's already right, but I don't know some error in file.

public function updateact($id, Request $request)
{
    // Menyiapkan data gambar yg diupload ke variable $file
    $file_name = $request->hidden_image;
    $file = $request->file('file');
    if($file != '')
    {
        // Validasi data
        $this->validate($request,[
            'name'          => 'required|alpha',
            'email'         => 'required|email',
            'level'         => 'required|alpha',
            'password'      => 'required',
            'file'          => 'required|file|image|mimes:jpeg,jpg,png|max:1048'
        ]);

        $file_name = time()."_".$file->getClientOriginalName();

        // Isi dengan nama folder tempat kemana file diupload
        $upload_directory = 'p_users';
        $file->move($upload_directory, $file_name);

        // Hapus file
        $gambar = User::where('id',$id)->first();
        File::delete('p_users/'.$gambar->file);

     }
    else
    {
        // Validasi data
        $this->validate($request,[
            'name'          => 'required|alpha',
            'email'         => 'required|email',
            'level'         => 'required|alpha',
            'password'      => 'required',
        ]);

    }

    // Update data
    $users = User::find($id);
    $users->name         = $request->name;
    $users->email  = $request->email;
    $users->level         = $request->level;
    $users->password        = $request->password;
    $users->file         = $file_name;
    $users->save();

    return redirect('/ec-admin/users')->with('usrsupdateno', 'Data update Successfully!');
}

I got this error when I tried to update other field form.

ErrorException
Creating default object from empty value

This highlight from error.

enter image description here

1 Answers

I think the answer would be to use a public_path, so your controller knows to check the file in the public directory.

Like:

File::delete(public_path('p_users/'.$gambar->file));

Or:

unlink(public_path('p_users/'.$gambar->file))
Related