首页 > 解决方案 > 如何使用 Laravel 更新图像?

问题描述

我想使用 Laravel 更新我的数据库中的图像,但不幸的是,图像没有更新。我该如何解决这个问题?

控制器

public function updateaction(Request $request, $id)
{
    $category = $request->input('select_category');
    $project_name = $request->input('product_name');

    $image = $request->file('select_file');
    $new_name = mt_rand().'.'.$image->getClientOriginalExtension();
    $image->move(public_path('projects'), $new_name);
    $updaterecord = DB::table('projects')->where(['products_id' => $id])->update([
        'project_name' => $project_name, 'category_id' => $category, 'image' => $image
    ]);

    if ($updaterecord) {
        return redirect('view_project');
    }

    return back();
}

看法

<form action="{{route('project.update', $project->products_id)}}" method="POST"
      enctype="multipart/form-data">
    @csrf
    <div class="group-form">
        <select class="form-control" name="select_category" required>
            <option value="">Select Category</option>
            @foreach($categories as $category)
                <option value="{{$category->id}}" @if($project->category_id) == $category->id)  @endif>
                {{$category->category_name}}</option>
            @endforeach
        </select>
    </div>
    <br>
    <div class="group-form">
        <input type="text" class="form-control" value="{{$project->project_name}}"
               placeholder="Update Product Name" name="product_name" required>
    </div>
    <br>
    <div class="group-form">
        <input type="file" class="form-control" value="{{asset('/public/projects/'.$projects->image)}}"
               name="select_file">
    </div>
    <br>
    <div class="group-form">
        <input type="submit" class=" btn btn-primary form-control" value="UPDATE" name="Update">
    </div>
</form>

路线

Route::post('project_update/{id}/update', 'AdminController@updateaction')
    ->name('project.update');

标签: phplaravel

解决方案


您尝试将 UploadedFile 对象保存到数据库。我认为,您需要保存一个带有文件名的字符串,例如,$new_name 而不是 $image。


推荐阅读