Как мне удалить свое изображение из папки с изображениями в laravel? - PullRequest
0 голосов
/ 15 апреля 2019

На моей странице сведений о редактировании есть поле изображения, я хочу, чтобы при загрузке нового изображения старая фотография удалялась из папки изображений, а новая фотография загружалась, и если я не загружаю изображение, чем при отправке, ошибка не генерируется

вот код загрузки моего изображения

$file = $request->file('file');
$name = time() . $file->getClientOriginalName();
$file->move('uploads/images', $name);
$employee->file = $name;
$employee->save();

Как мне отменить связь?

Ответы [ 3 ]

1 голос
/ 15 апреля 2019

Если вы обновляете модель, вы можете удалить старый файл и загрузить новый, если он указан:

if ($request->hasFile('file')) {
    Storage::delete($employee->file); // If $file is path to old image

    $employee->file = $request->file('file')->store('name-of-folder');
}
0 голосов
/ 15 апреля 2019

вы можете использовать unlink для удаления предыдущего файла изображения, если существует этот код:

if($request->hasFile('file')){
    if(file_exists(public_path("your image url"))){
        unlink(public_path("your image url"));
    };
    UploadImage($request)
}

и UploadImage () определяют как:

private function UploadImage($request){
    $file = $request->file('file');
    $name = time() . $file->getClientOriginalName();
    $file->move('uploads/images', $name);
    $employee->file = $name;
    $employee->save();
}
0 голосов
/ 15 апреля 2019

Мы можем так использовать unlink в php

Но если вы хотите сделать это способом Laravel, используйте вместо этого метод File :: delete ().

// Удалитьодин файл

use File;
File::delete($filename);

// Удалить несколько файлов

File::delete($file1, $file2, $file3);

// Удалить массив файлов

$files = array($file1, $file2);
File::delete($files);

Примечание: $ filename содержит полный путь и изображениеимя как ['https://www.example.com/images/image.jpg']

...