在非对象上调用成员函数getClientOriginalName()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在非对象上调用成员函数getClientOriginalName()相关的知识,希望对你有一定的参考价值。

我正在尝试制作图片上传器,但它总是给我这个错误

Call to a member function getClientOriginalName() on a non-object

这是我的代码控制器代码

public function uploadImageProcess(){

    $destinatonPath = '';
    $filename = '';

    $file = Input::file('image');
    $destinationPath = public_path().'/assets/images/';
    $filename = str_random(6).'_'.$file->getClientOriginalName();
    $uploadSuccess = $file->move($destinationPath, $filename);

    if(Input::hasFile('image')){
        $images = new Images;

        $images->title = Input::get('title');
        $images->path = '/assets/images/' . $filename;
        $image->user_id = Auth::user()->id;

        Session::flash('success_insert','<strong>Upload success</strong>');
        return Redirect::to('user/dashboard');
    }
}

这是上传表格

<form role="form" action="{{URL::to('user/poster/upload_process')}}" method="post">
    <label>Judul Poster</label>
    <input class="form-control" type="text" name="title">
    <label>Poster</label>
    <input class="" type="file" name="image"><br/>
    <input class="btn btn-primary" type="submit" >
</form>

我的代码出了什么问题?

答案

你错过了表单标记中的enctype属性。

要么这样做

<form role="form" action="{{URL::to('user/poster/upload_process')}}" method="post" enctype="multipart/form-data">
...
</form>

或这个...

{{ Form::open(array('url' => 'user/poster/upload_process', 'files' => true, 'method' => 'post')) }}
// ...
{{ Form::close() }}
另一答案

这些代码是正确的,但您没有检查Input::file('image')的返回值。我认为返回值可能不是正确的对象或您的类输入没有公共函数名称是getClientOriginalName

码:

$file = Input::file('image');
var_dump($file); // if return a correct object. you will check your class Input.

祝好运。

另一答案

请检查您的表单'files'=> true {!! Form :: open(['route'=> ['Please Type Url'],'class'=>'form-horizo​​ntal','files'=> true])!!}

另一答案

这只是因为你忘记在enctype="multipart/form-data"标签中写<form>

当您忘记这一点时会发生此错误:

<form class="form form-horizontal" method="post" action="{{ route('articles.store') }}" enctype="multipart/form-data">
另一答案
{!! Form::open(array('url' => '/xyz','files' => true)) !!}
{!! Form::close() !!}

以上是关于在非对象上调用成员函数getClientOriginalName()的主要内容,如果未能解决你的问题,请参考以下文章

在非构造的“对象”上调用非虚拟成员函数是不是定义明确? [复制]

致命错误:在非对象上调用成员函数 fetch()?

致命错误:在非对象上调用成员函数 getLoginUrl()

在非对象上调用成员函数 removeElement()

FatalErrorException:错误:在非对象 symfony 上调用成员函数 has()

致命错误:在非对象 cakephp 上调用成员函数 save()