Как обновить изображение в репозитории путем загрузки? - PullRequest
0 голосов
/ 09 июля 2020

Я настраиваю CRUD, аналогично электронной коммерции. Я загрузил изображение, оно хранится в папке publi c. Имя изображения заменяется значением ввода, которое помещает пользователь. Это же значение сохраняется в базе данных с расширением изображения. Мне также удалось удалить изображение, но я не знаю, как его обновить. Кто-нибудь может дать мне свет?

контроллер проекта:

public function store(Request $request)
{
    $nameFile = $request->input('imageName', '');
    if($request->file('imageFile')->isValid()){
        $nameFile .= '.' . $request->file('imageFile')->getClientOriginalExtension();
        $request->file('imageFile')->storeAs('projects', $nameFile);
    }


    $project = new Project();

    $project->name = $request->input('name');
    $project->price = $request->input('price');
    $project->imageName = $nameFile;

    $project->save(); 

    return redirect()->route('ProjectControllerCreate');
}



public function destroy($id)
{   
    $project = Project::find($id);

    // Image
    $filePathName = public_path().'/storage/projects/'. $project->imageName;
    if( file_exists($filePathName) ){
        unlink($filePathName);
    }

    // Data
    if(!$project)
        return redirect()->back();
        
    $project->delete();

    return redirect()->route('ProjectControllerCreate');
}

public function update(Request $request, $id)
{   
    $project = Project::find($id);
    if(!$project)
        return redirect()->back();

    $project->update($request->all());

    return redirect()->route('ProjectControllerCreate');
}

1 Ответ

1 голос
/ 09 июля 2020

Вот как можно обновить:

use Illuminate\Support\Facades\Storage;

public function update(Request $request, $id)
{   
    $project = Project::find($id);
    if(!$project)
        return redirect()->back();
    // Update new image
    if($request->file('imageFile')->isValid()){
        // Delete old image
        $old_image = $project->imageName;
        Storage::delete($old_image);

        $nameFile = $request->input('imageName', '');
        $nameFile .= '.' . $request->file('imageFile')->getClientOriginalExtension();
        $request->file('imageFile')->storeAs('projects', $nameFile);
        $project->imageName = $nameFile;
    }

    $project->name = $request->input('name');
    $project->price = $request->input('price');
    $project->save(); 
    return redirect()->route('ProjectControllerCreate');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...