web-dev-qa-db-fra.com

Fichier d'entrée dans laravel 5.2?

J'essaie de télécharger un fichier, mais il échoue lorsque la demande parvient au contrôleur. Avec fail, je veux dire que si j'essaie $request->hasFile("filename"), retourne toujours faux.

Y a-t-il un champ spécifique que je dois spécifier dans la vue?

Ceci est un extrait de la vue:

<body>
    <form action="{{url('dev/tester')}}" method="POST">
        {{csrf_field()}}
        <input type="file" name="file">
        <button type="submit">Test</button>
    </form>
</body>

Et voici le contrôleur

class Tester extends Controller
{
    public function index(Request $request)
    {
        if($request->hasFile('file'))
        {
            dd('Got the file');
        }

        dd('No file');
    }

    public function testView()
    {
        return view('tests.file_upload');
    }
}

Je suis toujours renvoyé "Aucun fichier".

Un indice? J'ai même vérifié le fichier php.ini pour voir s'il y avait une limite de taille, mais tout est réglé sur 32M comme paramètres par défaut de MAMP ...

8
Caius

Vérifiez si vous avez peut-être oublié d'ajouter enctype="multipart/form-data" dans form

9
Imtiaz Pabel

Vous devez activer le formulaire de téléchargement sur votre formulaire,

il y a 2 façons de le faire:

  1. En utilisant HTML

    <form action="{{url('dev/tester')}}" method="post" enctype="multipart/form-data">
    
  2. En utilisant laravel Form & HTML ( https://laravelcollective.com/docs/5.2/html )

    {!! Form::open( [ 'action' => url( 'dev/tester' ), 'method' => 'post', 'files' => true ] ) !!}
        // Your form
    {!! Form::close() !!}
    

Cela devrait fonctionner comme un charme!

Essayez d’ajouter le enctype="multipart/from-data" à votre formulaire, cela devrait alors fonctionner!

1
linx