2015-09-03 14 views
17

ich ein Problem in meiner Laravel Ajax-Anwendung haben,Laravel 5 Ajax-Datei/Bild hochladen

Ich kann Bilder/Dateien über Ajax POST hochladen.

Hier ist mein Code.

Ajax ..

/*Add new catagory Event*/ 
$(".addbtn").click(function(){ 
$.ajax({ 
     url:'add-catagory', 
     data:{ 
     logo:new FormData($("#upload_form")[0]), 
     }, 
     dataType:'json', 
     async:false, 
     type:'post', 
     processData: false, 
     contentType: false, 
     success:function(response){ 
     console.log(response); 
     }, 
    }); 
}); 
/*Add new catagory Event*/ 

Blade-Vorlage ...

<form enctype="multipart/form-data" id="upload_form" role="form" method="POST" action="" > 
     <div class="form-group"> 
     <label for="catagry_name">Name</label> 
     <input type="hidden" name="_token" value="{{ csrf_token()}}"> 
     <input type="text" class="form-control" id="catagry_name" placeholder="Name"> 
     <p class="invalid">Enter Catagory Name.</p> 
     </div> 
     <div class="form-group"> 
     <label for="catagry_name">Logo</label> 
     <input type="file" class="form-control" id="catagry_logo"> 
     <p class="invalid">Enter Catagory Logo.</p> 
    </div> 

    </form> 
    </div> 
    <div class="modelFootr"> 
     <button type="button" class="addbtn">Add</button> 
     <button type="button" class="cnclbtn">Reset</button> 
    </div> 
    </div> 

-Controller ..

public function catadd(){ 
    if (Input::hasFile('logo')) 
    { 
     return "file present"; 
    } 
    else{ 
     return "file not present"; 
    } 
} 

Strecke ..

Route::post('add-catagory',['as'=>'catagory_add','uses'=>'[email protected]']); 

Was ist der Fehler in meinem Code ???

Ich kann die Dateiinformationen in Laravel Controller erhalten ..

Wie kann ich dieses Problem lösen ...?

+0

irgendwelche Ideen hier http://stackoverflow.com/questions/38893450/sending-pdf-file-to-server-using-ajax –

Antwort

20

Zwei Dinge zu ändern:

aus Ihrer js Datei ändern:

data:{ 
    logo:new FormData($("#upload_form")[0]), 
}, 

An:

data:new FormData($("#upload_form")[0]), 

Weil Sie mögen, dass das gesamte Formular senden.

in Ihrem HTML:

einen Namen Ihrer Datei Eingabefeld hinzufügen

<input type="file" class="form-control" id="catagry_logo"> 

An:

<input type="file" name="logo" class="form-control" id="catagry_logo"> 
+3

Woooooooooooooow .. Danke Kumpel ... Es funktioniert perfekt. –

+1

ist es TypError: Illegale Invokation –

+0

Es ist sagen, lassen Sie die Antwort auf Google finden, guter Typ, hilfreich;) – Iamzozo

1

Check in Ihrem Controller, was Sie bekommen, wenn Sie Post:

echo dd(Input::all()); 

überprüfen Dateien in PHP-Objekt. Dies in PHP:

$_FILES 

Request::file("logo"); 

Ja, du postest wirklich keine Daten? Sendet das Formular wirklich?

+0

seine Show viel bla bla scripts dude. –

+0

Was ist mit Dateien Objekt in PHP? – marko

+0

No marko .. gibt es irgendwelche Probleme mit formdata? –

1

es nicht für mich dataType:'json' wegen nicht funktioniert. Wenn jemand Fehler bekommt, entferne einfach dataType:'json'.