2016-04-27 14 views
0

Ich versuche mein Laravel-Projekt, um ein Formular zu erstellen, das ein Bild auf dem Server mit Ajax hochladen, aber die Anfrage immer fehlgeschlagen, versuche ich dies zu tun gibt es ein Problem im Code?Fehler beim Hochladen des Bildes mit Ajax auf Laravel 5

html:

<form id="changeImage" enctype="multipart/form-data"> 
    <input type="hidden" name="_token" id="_token" value="{{csrf_token() }}"> 
    <center> 
     <div class="form-group"> 
      <center><input type="file" name="image" accept="image/*"></center> 
     <p class="help-block">Format: png, jpg et gif.</p> 
     </div> 
    </center> 
    <button type="submit" class="btn btn-primary">Submit</button> 
    </form> 

Ajax:

$('input[name="image"]').change(function(event) { 
     files = event.target.files; 
    }); 
$('#changeImage').submit(function(event) { 
    event.preventDefault(); 
    var _token= $('input[name="_token"]').val(); 
    var data = new FormData(); 
    data.append('_token',_token); 
    $.each(files, function(k, v) { 
     data.append('image',v); 
    }); 

    $.ajax({ 
     url: '/profile/image', 
     type: 'POST', 
     data:data, 
     processData: false, 
     contentType: "multipart/form-data", 
     success: function(data){ 
      console.log('done'+data); 
     }, 
     async: false, 
     error: function(data){ 
      console.log('No'); 
      var errors = data.responseJSON; 
      errorsHtml = '<div class="alert alert-danger"><ul>'; 
      $.each(errors , function(key, value) { 
       errorsHtml += '<li>' + value[key] + '</li>'; 
      }); 
      errorsHtml += '</ul></div>'; 
      $('#form-errors').html(errorsHtml); 
     } 
    }); 
}); 

Server Side - PHP (Laravel):

Route:

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

-Controller

public function postImage(Request $request){ 
    if($request->ajax()){ 
     $imagedestination = 'images\profile'; 
     $file = $request->file('image'); 
     $image_name = time()."-".$file->getClientOriginalName(); 
     $file->move($imagedestination, $image_name); 
    } 
} 
+0

http://stackoverflow.com/questions/36281248/upload-image- to-database-in-laravel-5-using-eloquent-orm – Sunil

+0

@Sunil ich versuche das zu tun, aber ich bekomme einen jQuery-Fehler in dieser Zeile 'data: new FormData ($ (" # upload_form ") [0]), 'Der Fehler ist:' TypeError: 'append' aufgerufen für ein Objekt, das Interface FormData nicht implementiert. ' –

Antwort

0

vergessen Sie über CSRF-Validierung.

Soweit diese Anfrage POST ist, müssen Sie auch ein CSRF-Token senden, oder zumindest die Überprüfung für diese Route deaktivieren.

Zum app/Http/Middleware/VerifyCsrfToken.php

und fügen Sie Ihre POST-URL zu protected $except = [];

auch diesen Teil der Dokumentation lesen: https://laravel.com/docs/master/routing#csrf-protection

+0

ja ich sende es auch che ck meine HTML-Form: '' –

+0

Haben Sie irgendwelche Fehlermeldungen oder Protokolldatensätze? – Dinar

+0

Nein, bekomme ein leeres Objekt Ich hole Fehler bei der Fehlerfunktion in AJAX, aber es gibt keine Fehler Daten enthält ist leeres Objekt –

Verwandte Themen