2017-03-03 6 views
1

Ich versuche, eine Datei in Laravel hochladen. Aber jedes Mal, wenn ich den Submit-Button drücken, gibt es mir den internen Serverfehler in der Konsole. Ich habe das Rote mit einer Anfrage überprüft, um zu überprüfen, ob die Controller-Funktion ordnungsgemäß funktioniert und es funktioniert gut. Kann irgendjemand sagen was das Problem ist? hier ist mein Code-BeispieleInterner Server Fehler beim Hochladen von Dateien in Laravel5.3

Route Code

Route::post('/storefile','[email protected]'); 

Controller

public function storeFile(Request $request){ 
     if($request->ajax()){ 
      echo "got"; 
     } 
     else echo "not ajax"; 
    } 

Ansicht

@extends('layouts.app') 
@section('stylesheet') 
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" type="text/css" /> 
    <link type="text/css" href="/css/bootstrap-tagging.css" rel="stylesheet"> 
@endsection 
@section('content') 
    <div class="validation-system"> 
     <div class="validation-form"> 
      <form id="test-form" action="/storepublication" method="post" enctype="multipart/form-data" > 
       {!! csrf_field() !!}   
       <div class="col-md-3 form-group1"> 
        <label class="control-label">Upload Paper</label> 
        <input type="file" name="file" id="paper"> 
       </div> 
       <div class="col-md-3 form-group1"> 
        <input type="submit" id="submit" name="submit" class="btn btn-primary" value="Add"> 
       </div> 
      </form> 
     </div> 
    </div> 
@endsection 
@section('scripts') 
    <script> 
     $(document).ready(function() { 
      $("#test-form").submit(function (event) { 
       event.preventDefault(); 
       var file_data = $('#paper').prop('files')[0]; 
       var form_data = new FormData(); 
       form_data.append('file', file_data); 
       $.ajax({ 
        url: "/storefile", 
        type: "post", 
        data: form_data, 
        processData: false, 
        contentType: false, 
        success: function (res) { 
         document.getElementById("response").innerHTML = res; 
        } 
       }); 

      }); 

     }); 
    </script> 

@endsection 

Antwort

1

Versuchen Sie ersetzen diese

var file_data = $('#paper').prop('files')[0]; 

dieses

var file_data = $('#paper').files[0]; 
+0

Nein, das nicht –

+0

hilft Haben Sie überprüfen mit 'if ($ request-> Datei ('Datei')) 'in Ihrem Controller statt' if ($ request-> ajax()) ' – C2486

+0

ja tat es gerade jetzt. Keine Änderung. Habe gerade festgestellt, dass ich auf der Serverseite eine Token-Mismatch-Ausnahme habe. Ich habe das auch versucht Daten: {"_token": "{{csrf_token()}}", "Papier": form_data} aber noch die Mismatch-Ausnahme ist da –

Verwandte Themen