如何在 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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 14:23:59  来源:igfitidea点击:

How to update image using controller in laravel?

phplaravellaravel-5

提问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');
}