2016-06-30 21 views
3

Ich versuche, eine Datei hochzuladen, aber es schlägt fehl, wenn die Anfrage auf dem Controller landet. Mit Fails ich meine, dass, wenn ich versuche, $request->hasFile("filename") immer false zurückgibt.Eingabedatei in Laravel 5.2?

Gibt es ein bestimmtes Feld, das ich in der Ansicht angeben muss?

Dies ist ein Ausschnitt aus der Ansicht:

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

Und hier ist der Controller

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

ich immer 'Keine Datei' erhalten zurückgegeben.

Irgendwelche Hinweise? Ich habe sogar die php.ini überprüft, um zu sehen, ob es eine Größenbeschränkung gab, aber es ist alles auf 32M als MAMP's Standardeinstellungen gesetzt ...

+6

Sie sendet nicht enctype hinzufügen = "multipart/aus-Daten" von Ihnen aus –

+0

was für eine Schande! Danke @ Imtiaz Pabel! Dies sind die Art von Fehlern, die Sie einen ganzen Tag verlieren lassen! : D Wenn du die Frage beantworten willst, werde ich sie abstimmen – Caius

+0

Ich habe meine Antwort hinzugefügt –

Antwort

2

Sie haben vielleicht vergessen enctype = "multipart/form-data" in Form

1

Fügen Sie die enctype = "multipart/from-data" zu Ihrem Formular hinzu, dann sollte es funktionieren!

+0

Wie ich im vorherigen Kommentar gesagt habe, sind diese Verzeihungen, die dir helfen, einen ganzen Tag zu verlieren (ironisch): D Danke! – Caius

+0

: D Ich weiß, dass diese Erros dich für viele Tage wach halten können :) – linx

2

Sie müssen ermöglicht Upload-Formular zum Formular,

gibt es zwei Möglichkeiten, es zu tun:

  1. von HTML mit

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

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

Dies sollte wie ein Charme funktionieren!