我想更新用户图像,但它没有得到更新。我使用以下控制器更新图像..你能指出控制器功能上的错误吗?
查看部分:
<div class="form-group">
<label>Image Upload</label>
<input type="file" name="image" id="image"><img src="{{ asset('public/images/' . $course->image) }}" width="200px"/></br>
</div>
控制器功能:
public function update(Request $request, $id)
{
$data=Course::findOrFail($id);
if ($request->hasFile('image'))
{
$file = $request->file('image');
$timestamp = str_replace([' ', ':'], '-', Carbon::now()->toDateTimeString());
$name = $timestamp. '-' .$file->getClientOriginalName();
$data->image = $name;
$file->move(public_path().'/images/', $name);
}
$data->course_code = $request['course_code'];
$data->course_title = $request['course_title'];
$data->course_credit = $request['course_credit'];
$data->save();
return redirect('course');
}
是否检查了"images"目录的文件权限?上传文件需要有写权限。
问题是,
$data->image = $name;
您设置了值,但不将其保存在任何地方。你必须添加一个保存行。
$data->save();
注意,调用update()
只保存作为参数传入的内容,而不保存通过mutator设置的内容。
查看问题的错误/解决方案是首先我需要存储更新值,然后保存新图像。所以我在控制器上做了一些改变,解决了这个问题。
控制器代码:
public function update(Request $request, $id)
{
$data=Course::findOrFail($id);
$data->update($request->all());
if ($request->hasFile('image'))
{
$file = $request->file('image');
$timestamp = str_replace([' ', ':'], '-', Carbon::now()->toDateTimeString());
$name = $timestamp. '-' .$file->getClientOriginalName();
$data->image = $name;
$file->move(public_path().'/images/', $name);
$data->save();
}
return redirect('course');
}