LARAVEL Как удалить изображение из папки publi c? - PullRequest
0 голосов
/ 11 апреля 2020

Я кодирую сообщение в блоге, когда я нажимаю добавить сообщение, изображение из любой папки помещается в public / user / img / Как я могу удалить его, когда удаляю всю строку таблицы? (нажмите «Удалить сообщение»), смотрите ниже функцию publi c deletePost ($ id), я могу удалить детали (текст) в строке, но не могу удалить файл в папке. Пожалуйста, помогите

public function deletePost($id){
    $posts = Post::where('id',$id);
    $posts->delete();
    return back()->with('delete_posts_success','Deleted!');
}

public function getAddPost() {
    return view('admin.publish');
}

public function postAddPost(Request $request) {
    $post = $request->all();


    $post = new Post;
    $post->title = $request->title;
    $post->author = $request->author;
    $post->content = $request->content;
    $post->intro = $request->intro;
    $post->type = $request->type;

    if($request->hasFile('image')) {
        $file = $request->file('image');
        $extension = $file->getClientOriginalExtension();
        if($extension != 'jpg' && $extension != 'png' && $extension != 'jpeg') {
            return back()->with('Error', 'File extension must be jpg, png, jpeg');
        }
        $imageName = $file->getClientOriginalName();
        $file->move("user/img", $imageName);
        $post->image = $imageName;
    } else {
        $imageName = null; 
    }


    $post->save();
    return back()->with('create_posts_success','Published!');
}

1 Ответ

0 голосов
/ 11 апреля 2020

Вы должны сохранять имя файла в базе данных где-то для этого загруженного сообщения.

Теперь, когда вы удаляете это сообщение, -> получить имя файла из вашей записи в БД, -> проверить, существует ли файл на местоположение с помощью file_exists() -> удалить найденный файл с помощью unlink()

-> получить ответ об удалении файла (true | false)

, в вашем случае это будет что-то вроде ниже

$filePathName = 'user/img/' . $post->image;
if( file_exists($filePathName) ){
   unlink($filePathName);
}

игнорируйте мои синтаксические ошибки, пожалуйста Готово

...