2016-02-24 30 views
1

我试图编辑/更新我的图片上传,但我得到“调用成员函数getClientOriginalExtension()在非对象”错误。请帮助调用成员函数getClientOriginalExtension()非对象错误

我的控制器:

public function update(Request $request, $id) 
{ 
     $lnkupdate=Request::all(); 

    $links=Links::findorFail($id); 
    $file = Input::file('image'); 
    $random_name = str_random(8); 
    $destinationPath = 'albums/'; 
    $extension = $file->getClientOriginalExtension(); 
    $filename=$random_name.'_link_logo.'.$extension; 
    $uploadSuccess = Input::file('image')->move($destinationPath, $filename); 
    ConsularGen::update(array(
    'name'=>Input::get('name'), 
    'link' => Input::get('link'), 
    'image' => $filename, 
    )); 
} 

查看:

{!!Form::model($links,['method'=>'PATCH','action'=>['[email protected]',$links->id]])!!} 
<input type="hidden" name="_token" value="{{ csrf_token() }}"> 
<div class="form-group"> 
    <label for="image">Select a logo</label> 
     {!!Form::file('image')!!} 
     </div> 

<div class="form-goup"> 
{!!Form::label('name','Name')!!} 
{!!Form::text('name',null,['class'=>'form-control'])!!} 
</div> 

    <div class="form-goup"> 
{!!Form::label('link','Link')!!} 
{!!Form::text('link',null,['class'=>'form-control'])!!} 

</div> 
<div class="form-group"> 
<button type="submit" class="btnbtn-default">Add</button> 
</div> 
{!!Form::close()!!} 

路线:

Route::patch('admin/links/{id}/update','[email protected]'); 

回答

1

上传文件requi res html表单来指定enctype="multipart/form-data"。如果你没有,这个文件将不会被上传,Input::file('image')将返回null,你会看到你所看到的错误。

如果您告诉Laravel Form构建器需要处理文件,它会将其添加到您的表单中。添加'files' => true到您的阵列形式:

{!! Form::model($links, ['method'=>'PATCH', 'files' => true, 'action'=>['[email protected]', $links->id]]) !!} 

一旦这是固定的,你还可以得到这个错误,如果你不实际选择要上传的文件。你应该把你的档案交给hasFile。例如:

public function update(Request $request, $id) 
{ 
    $lnkupdate=Request::all(); 

    if (Input::hasFile('image')) { 
     $links=Links::findorFail($id); 
     $file = Input::file('image'); 
     $random_name = str_random(8); 
     $destinationPath = 'albums/'; 
     $extension = $file->getClientOriginalExtension(); 
     $filename=$random_name.'_link_logo.'.$extension; 
     $uploadSuccess = Input::file('image')->move($destinationPath, $filename); 
     ConsularGen::update(array(
      'name'=>Input::get('name'), 
      'link' => Input::get('link'), 
      'image' => $filename, 
     )); 
    } else { 
     echo 'no file uploaded. oops.'; 
    } 
} 
+0

嗨我试过你的代码,现在我得到了“非静态方法Illuminate \ Database \ Eloquent \ Model :: update()不应该被静态调用,假设$ this this incompatible context“error – user3810794

+0

谢谢@patricus的帮助,我也可以通过这样做来解决”非静态方法...“错误: Links :: where('输入:: get('link'), 'image'=>更新(数组( 'name'=> Input :: get('name'), 'link'=> $ filename, )); – user3810794

+0

@ user3810794我只在'hasFile()'检查中包装你现有的代码;我没有试图检查任何其他问题。很高兴你把事情解决了。 – patricus

0

您的文件未成功上传。你试图在一个空文件上运行getClientOriginalExtension()这就是为什么你得到这个错误

相关问题