我想更新用户图片但是没有更新。我使用了以下控制器来更新图像..你能说出控制器功能的错误吗?
查看部分:
<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');
}
答案 0 :(得分:0)
您是否检查了'images'目录中的文件权限?它需要具有上传文件的写权限。
答案 1 :(得分:0)
问题是这个,
$data->image = $name;
您可以设置值,但不能将其保存在任何位置。您必须添加保存行。
$data->save();
请注意,调用update()
只会将您传入的内容保存为参数,并不会保存您通过mutator设置的内容。
答案 2 :(得分:0)
请参阅问题的错误/解决方案首先我需要存储更新值,然后保存新图像。所以我在控制器上做了一些改动并解决了它。
这是控制器代码:
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');
}