如何通过上传更新存储库中的图像?

时间:2020-07-09 09:10:33

标签: laravel

我正在设置CRUD,类似于电子商务 我上传了图片,它存储在公共文件夹中。图像的名称将替换为用户放置的输入的值。相同的值将以图像扩展名保存在数据库中。 我也可以删除该图像,但是我不知道如何更新它。有人可以给我点灯吗?

项目控制器:

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 个答案:

答案 0 :(得分:1)

这是更新方式:

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');
}