web-dev-qa-db-fra.com

Appel à une fonction membre getClientOriginalName () sur un non-objet

J'essaye de faire un uploader d'image, mais ça me donne toujours cette erreur

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

voici mon code contrôleur de code

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');
    }
}

et voici le formulaire de téléchargement

<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>

qu'est ce qui ne va pas avec mon code?

8
Spadaboyz

Vous manquez l'attribut enctype dans le balisage de votre formulaire.

Soit faire cela

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

ou ca...

{{ Form::open(array('url' => 'user/poster/upload_process', 'files' => true, 'method' => 'post')) }}
// ...
{{ Form::close() }}
22
Andreyco

Ces codes sont corrects, mais vous n'avez pas vérifié les valeurs des retours de Input::file('image'). Je pense que la valeur retournée est peut-être pas un objet correct ou votre classe L'entrée n'a pas de nom de fonction publique est getClientOriginalName

Code:

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

Bonne chance.

1
user3003394

C'est simplement parce que vous oubliez d'écrire enctype="multipart/form-data" dans la balise <form>.

Cette erreur se produit juste quand vous oubliez ceci:

<form class="form form-horizontal" method="post" action="{{ route('articles.store') }}" enctype="multipart/form-data">
0
hamidreza ghanbari

Veuillez vérifier votre formulaire 'fichiers' => true {!! Form :: open (['route' => ['Veuillez taper l'URL'], 'class' => 'form-horizontal', 'files' => true ]) !! }

0
Pyae Sone Sone
{!! Form::open(array('url' => '/xyz','files' => true)) !!}
{!! Form::close() !!}
0
Parth Desai