我试图制作图片上传器,但它总是给我这个错误
在非对象上调用成员函数getClientOriginalName() 这是我的代码控制器代码
public function postSubtitle()
{
//$video = Video::where('user_id', '=', Auth::id())->find(Input::all('id'));
var_dump(Input::all());
$file= Input::file('name');
echo $file->getClientOriginalExtension();
}
这是上传表格
{{ form_open({'url': 'video/subtitle', 'files': 'true'}) }}
{{ form_file('name', {class: 'form-control'} ) }}
{{ form_submit(trans('main.edit'), {class: 'btn btn-lg btn-success btn-block'}) }}
{{form_close()}}
我的代码出了什么问题?
答案 0 :(得分:6)
如果您要处理文件上传,form
必须enctype="multipart/form-data"
。 (你可能会这样,但我们不知道你的函数form_open
是如何工作的。)
如果你有这个但仍然得到同样的错误,那就意味着你还没有选择任何文件。如果您没有上传文件,Input::file('name')
将是null
而不是对象。
所以你应该做的是首先检查它是否为空,然后继续处理你的文件。
$file = Input::file('name');
if ($file !== null) {
echo $file->getClientOriginalExtension();
}
答案 1 :(得分:1)
我应该记住。仅传递文件路径,例如仅传递输入类型的名称,不传递任何纯文件名。当我们传递错误格式时会发生此错误,因此建议您首先仔细检查,
解决方案在这里:
$image = $request->file('edit_image');
$destinationPath = public_path('/images');
$new_name = rand().'.'.$image->getClientOriginalExtension();
$image->move($destinationPath, $new_name);
PlayersModel::where('id', $edit_user_id)->update($players_Obj);