在非对象错误上调用成员函数 getClientOriginalExtension()
Call to a member function getClientOriginalExtension() on a non-object error
我正在尝试 edit/update 我的图片上传,但出现 "Call to a member function getClientOriginalExtension() on a non-object" 错误。请帮忙
我的控制器:
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'=>['LinksController@update',$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','LinksController@update');
上传文件需要html形式指定enctype="multipart/form-data"
。如果你没有这个,文件将不会被上传,Input::file('image')
将 return null
,你会看到你看到的错误。
如果您告诉 Laravel 表单生成器它需要处理文件,它会将其添加到您的表单中。将 'files' => true
添加到您的数组中,格式如下:
{!! Form::model($links, ['method'=>'PATCH', 'files' => true, 'action'=>['LinksController@update', $links->id]]) !!}
修复此问题后,如果您实际上没有 select 要上传的文件,也会出现此错误。您应该将提交的文件包裹在支票中 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.';
}
}
您的文件没有上传成功。
您正在尝试 运行 getClientOriginalExtension() 在空文件上,这就是您收到此错误的原因
我正在尝试 edit/update 我的图片上传,但出现 "Call to a member function getClientOriginalExtension() on a non-object" 错误。请帮忙
我的控制器:
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'=>['LinksController@update',$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','LinksController@update');
上传文件需要html形式指定enctype="multipart/form-data"
。如果你没有这个,文件将不会被上传,Input::file('image')
将 return null
,你会看到你看到的错误。
如果您告诉 Laravel 表单生成器它需要处理文件,它会将其添加到您的表单中。将 'files' => true
添加到您的数组中,格式如下:
{!! Form::model($links, ['method'=>'PATCH', 'files' => true, 'action'=>['LinksController@update', $links->id]]) !!}
修复此问题后,如果您实际上没有 select 要上传的文件,也会出现此错误。您应该将提交的文件包裹在支票中 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.';
}
}
您的文件没有上传成功。 您正在尝试 运行 getClientOriginalExtension() 在空文件上,这就是您收到此错误的原因