编辑/更新图片时,move()函数在laravel 5.2中不起作用

时间:2017-10-13 08:19:25

标签: laravel laravel-5

我有一个创建者页面,用户可以上传创始人的姓名,信息和图像。 在我看来,当我编辑图片并上传新图片时,图片的名称会存储在数据库中,但图像不会被上传。我的控制器一定有问题,但我似乎无法找到答案。任何帮助将不胜感激。

以下是我的模型,控制器和视图。

Founder Model

class Founder extends Model
{
     protected $fillable = ['name','information', 'image'];

     public function getImageAttribute()
     {
         if (! $this->attributes['image']) {
           return 'noimage.jpg';
     }

     return $this->attributes['image'];
}
public function getCreatedAtAttribute($date)
{
    return Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('Y-m-d');
}

public function getUpdatedAtAttribute($date)
{
    return Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('Y-m-d');
}

Founder Controller

public function update(Request $request, $id)
{

    $founder = Founder::find($id);
    $input  = $request->all();

    if($file=$request->file('image'))
    {
        $name = $file->getClientOriginalName();
        $file->move('/images/', $name);
        $input['image']= $name;
    }
    $founder->update($request->all());
    return redirect()->route('founder.view');

}

创始人查看编辑表格

<form class="form-horizontal" action="/founders/{{$founder->id}}" method="POST">

           {{csrf_field()}}

              <input type="hidden" name="_method" value="PUT">
              <div class="form-group">
                  <label class="col-md-12">Name</label>
                  <div class="col-md-12">
                     <input type="text" name="name" class="form-control" value="{{$founder->name}}"> 
                  </div>
              </div>

              <div class="form-group">
                  <label class="col-md-12">Information</label>
                  <div class="col-md-12">
                      <textarea class="form-control" name="information" rows="3" value="{{$founder->information}}">{{$founder->information}}</textarea>
                  </div>
              </div>
              <div class="form-group">
                  <label class="col-md-12">Change Image</label>
                  <div class="col-md-12">
                       <input type="file" name="image" class="form-control" value="{{$founder->image}}"> 
                  </div>
              </div>
              <button type="submit" name="submit" class="btn btn-success waves-effect waves-light m-r-10">Submit</button>

</form>

2 个答案:

答案 0 :(得分:0)

尝试使用重命名:

rename ('current/path/to/foo', 'new/path/to/foo');

文档:http://php.net/rename

更新: 或者使用变量$ destinationPath:

$file->move($destinationPath, $chooseYourFileName);

答案 1 :(得分:0)

使用此方法将可以100%工作

if($request->hasFile('filename')){

     $file = $request->filename;

    $file_new_name =  $file->move("upload/posts/", $file->getClientOriginalName());



     $post->filename = $file_new_names;

   }

记住文件名是您的