在更新Laravel中上传图片

时间:2016-01-23 09:45:52

标签: php laravel laravel-5

在Laravel5中我无法更新Edit中的图像,当我上传新文件时,此结果为null ... 在控制器,路线和编辑视图中的代码下方。

这是我的控制器:

public function update(Request $request, $id)
{
    $slider = Slider::findOrFail($id);
    //$input = $request->all();

    // uploads image
    if ($request->hasFile('image'))
    {
        $file = $request->file('image');
        $imagename = 'dpgomma_' . time() . '-' . $file->getClientOriginalName();
        $file->move(public_path().'/uploads/', $imagename);
        $input['image'] = $imagename;
    }
    $slider->save($request->all());
    return redirect('/admin/sliders')->with('message', 'Slider Modificata');
}

我的路线:

Route::get('/admin/sliders/edit/{id}', 'SliderController@edit');
Route::put('/admin/sliders/update/{id}',['as' => 'sliders.update', 'uses' => 'SliderController@update']);

我的观点:

{!! Form::model($slider, [
'method' => 'put',
'route' => ['sliders.update', $slider->id],
'files' => true
]) !!}

{!! Form::token() !!}

<div class="form-group">
    {!! Form::label('title', 'Title:', ['class' => 'control-label']) !!}
    {!! Form::text('title', null, ['class' => 'form-control']) !!}
</div>

<div class="form-group">
    {!! Form::label('image', 'image:', ['class' => 'control-label']) !!}
    {!! Form::file('image', null, ['class' => 'form-control']) !!}
</div>

{!! Form::submit('Update Task', ['class' => 'btn btn-primary']) !!}

{!! Form::close() !!}

2 个答案:

答案 0 :(得分:1)

您必须在表单开头添加'files' => true选项。

此外,您可以使用$request->hasFile('image')$request->file('image')代替Input外观。

我建议你看看this,没有理由不去工作。

答案 1 :(得分:1)

您的数据库未更新映像名称,因为映像名称包含在input['image']中,并且您使用$request服务容器更新数据库。因此,您的图像的原始名称通过$ request服务容器,如

$request = [
    'other' => 'other',
    'image' => 'you_original_image_name',
    'more_other' => 'more_other'
]

要使用所需文件名更新数据库,请更改此行

$input['image'] = $imagename;

$request['image'] = $imagename;