如何在 Laravel 中使用控制器更新图像?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/39275078/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to update image using controller in laravel?
提问by User57
I want to update user image but it's not getting updated. I have used following controller for updating the image.. Can you suggest what's the mistake in controller function?
我想更新用户图像,但它没有更新。我已经使用以下控制器更新图像..你能建议控制器功能有什么错误吗?
View part :
查看部分:
<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>
Controller function :
控制器功能:
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');
}
回答by Atiqur Rahman
Did you checked file permission on 'images' directory? It needs to have write permission for uploading files.
您是否检查了“图像”目录的文件权限?它需要具有上传文件的写权限。
回答by Pete Houston
The problem is this,
问题是这样的
$data->image = $name;
You set the value but you don't save it anywhere. You must add a saving line.
您设置了该值,但没有将其保存在任何地方。您必须添加一条保存线。
$data->save();
Note that, calling update()
only saves what you pass in as parameters, doesn't save what you set through the mutators.
请注意,调用update()
只会保存您作为参数传入的内容,不会保存您通过修改器设置的内容。
回答by User57
See The mistake/ solution of the problem is first i need to store the update value and then save the new image. So I made some changes in controller and solved it..
请参阅问题的错误/解决方案是首先我需要存储更新值,然后保存新图像。所以我在控制器中做了一些改变并解决了它..
Here is controller code:
这是控制器代码:
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');
}