Как заменить и удалить предыдущие загруженные файлы при редактировании записи в Laravel 4.2

#php #laravel

#php #ларавель

Вопрос:

Я использую laravel 4.2, потому что этот проект существует уже много лет. 🙂

Теперь, как я могу заменить и удалить предыдущие файлы, загруженные в общий каталог, при редактировании записи? Учитывая следующий код контроллера ( метод обновления) :

 public function update($id)
        {
            $idd = Sentry::getUser()->id;
            try {
                $validator = Validator::make(
                    Input::all(),
                    array(
                        'first_name' => 'required',
                        'last_name' => 'required',
                        'eng_certificate' => 'image|mimes:png,jpeg,jpg|max:1100',
                        'profile_img' => 'image|mimes:png,jpeg,jpg|max:1100',
                    )
                );
                if ($validator->passes()) {
                    $profile = User::find($id);
                    $profile->first_name = Input::get('first_name');
                    $profile->last_name = Input::get('last_name');    
                    if (Evidence::where('user_id', $idd)->count() == 0) {
                        $evidence = new Evidence;
                        $evidence->user_id = $idd;
                        $evidence->created_at = jDate::forge()->time();
                    } else {
                        $evidence = Evidence::where('user_id', $idd)->first();
                        $evidence->updated_at = jDate::forge()->time();
                    }
                    if (Input::hasFile('eng_certificate')) {
                        $image = Input::file('eng_certificate');
                        $destinationPath = 'uploads/evidence';
                        $filename = $image->getClientOriginalName();
                        $extension = $image->getClientOriginalExtension();
                        $image_filename = sha1($filename) . '-' . rand(0, 1000) . '.' . $extension;
                        $image_uploadSuccess = $image->move($destinationPath, $image_filename);
                        if ($image_uploadSuccess) {
                            $evidence->eng_certificate = $image_filename;
                            $evidence->save();
                        }
                    }
                    if (Input::hasFile('profile_img')) {
                        $image = Input::file('profile_img');
                        $destinationPath = 'uploads/evidence/profile_img/';
                        $filename = $image->getClientOriginalName();
                        $extension = $image->getClientOriginalExtension();
                        $image_filename = sha1($filename) . '-' . rand(0, 1000) . '.' . $extension;
                        $image_uploadSuccess = $image->move($destinationPath, $image_filename);
                        if ($image_uploadSuccess) {
                            $evidence->profile_img = $image_filename;
                            $evidence->save();
                        }
                    }
                    $profile->save();
                    return Redirect::route('cpanel.home')->with('success', 'اطلاعات پروفایل شما با موفقیت بروز گردید.');
                }
                else {
                    return Redirect::back()->withInput()->withErrors($validator->messages());
                }
            }
            catch (LoginRequiredException $e) {
                return Redirect::back()->withInput()->with('danger', $e->getMessage());
            }
        }
 

Как я могу это исправить?
Спасибо.

Ответ №1:

  1. узнайте текущее местоположение файла
  2. используйте unlink функцию php https://www.w3schools.com/php/func_filesystem_unlink.asp

Ответ №2:

Вы можете взаимодействовать с файловой системой, используя: Файловая система Laravel

Например:

 Storage::delete('file.jpg');
 

См.: https://laravel.com/docs/5.8/filesystem#удаление-файлов