2016-08-10 5 views
0

Ich habe ein Formular zum Hochladen von 3 verschiedenen Dateien implementiert.Fehler beim Tokenenkonflikt beim Hochladen einiger Dateien

Hier ist eine:

<form method="POST" action="{{ route('register_update' , Auth::user()->id) }}" enctype="multipart/form-data"> 
    <input type="hidden" name="_token" value="{{{ csrf_token() }}}" /> 
    <div class="file-container"> 
     <input type="file" name="carte-id" id="id-file" class="input-file"> 
     <div class="fake-input-file"> 
     <div class="cross-container" id="cross-cont1"> 
      <i class="icon-plus-symbol" id="cross1"></i> 
     </div> 
     <div class="file-label" id="id-label"> 
      <label>Carte d'identité</label> 
     </div> 
     </div> 
    </div> 

Hier kann die Funktion in meinem Controller ist:

public function registerUpdate(CardAvsRequest $request){ 
     $id = Auth::user()->id; 
     $first_name = User::find($id)->student->first_name; 
     $last_name = User::find($id)->student->last_name; 
     $name = $first_name . " " . $last_name; 
     $message = ""; 
     if ($request->hasFile('carte-id')) 
     { 
      $image1 = $request->file('carte-id'); 
      if($image1->isValid()) 
      { 
       if ($request->hasFile('avs')) 
       { 
        $image2 = $request->file('avs'); 

        if($image2->isValid()) 
        { 
         if ($request->hasFile('permit')) 
         { 
          $image3 = $request->file('permit'); 

          if($image3->isValid()) 
          { 
           $path = config('card.path')."/$id"; 
           $name = "carte-id.".$image1->getClientOriginalExtension(); 
           $image1->move($path, $name); 
           $path = config('card.path')."/$id"; 
           $name = "avs.".$image2->getClientOriginalExtension(); 
           $image2->move($path, $name); 
           $path = config('card.path')."/$id"; 
           $name = "permit.".$image3->getClientOriginalExtension(); 
           $image3->move($path, $name); 
           $message = "Super ! Vous avez importé tous les fichiers nécessaires."; 
           //ici on dit dans la DB que l'utilisateur à uploadé tous les fichiers 
          } 
         } 
        } 
       } 
      } 

     } 
     return redirect()->route('account', $id)->with('message', $message); 
    } 

Und hier sind die CardAvsRequest Regeln:

public function rules() 
    { 
     return [ 
      'carte-id' => 'mimes:jpg,png,pdf,gif,jpeg,tiff,doc,docx,odt|max:10000', 
      'avs' => 'mimes:jpg,png,pdf,gif,jpeg,tiff,doc,docx,odt|max:10000', 
      'permit' => 'mimes:jpg,png,pdf,gif,jpeg,tiff,doc,docx,odt|max:10000', 
     ]; 
    } 

Aber jedes Mal, wenn ich versuche zu laden eine Datei (wie eine Videodatei oder eine ausführbare Datei), die einen Validierungsfehler erzeugen soll, habe ich diese Laravel er ror:

TokenMismatchException in VerifyCsrfToken.php line 67 

Ich will nur meinen Fehler nicht ein Laravel eins anzeigen.

Irgendwelche Ideen?

+0

Wie groß sind diese Dateien? Gefunden [etwas Simulair] (http://laravel.io/forum/02-20-2014-l40-csrf-tokenmismatchexception-when-uploading-large-files) –

Antwort

1

Die Token-Linie

<input type="hidden" name="_token" value="{{ csrf_token() }}" /> 

nur zwei geschweifte Klammern nicht drei

+0

Ändert nichts ... Es funktionierte mit 3 lockig Klammern –

+0

Zeigt es immer noch den Fehler? –

+0

Ja, das tut es! @Huzaib –

0

Sie können diese ersetzen sollte:

<input type="hidden" name="_token" value="{{{ csrf_token() }}}" /> 

mit:

{{ csrf_field() }} 

diese generieren alles HTML für dich . Also wird es das zum Beispiel erzeugen.

<input type="hidden" name="_token" value="vVGUrt0Grroh7CpmI8blFH6pLQnWQzi6WBWqpZzG"> 
+0

Gleicher Fehler ..: / –

0

Bitte überprüfen Sie Ihre Laravel Installationspfad gleiche war wie in der Konfigurationsdatei session.php .One mehr Lösung gesetzt ist nur die Linie 'App\Http\Middleware\VerifyCsrfToken' von kernel.php Kommentar unter der app\http folder.But es ist nicht eine richtige Art und Weise zu tun.

Verwandte Themen