Ich habe ein Problem in meiner Laravel Ajax-Anwendung,
Ich kann keine 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*/
Blattvorlage ...
<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";
}
}
Route ..
Route::post('add-catagory',['as'=>'catagory_add','uses'=>'[email protected]']);
Was ist der Fehler in meinem Code?
Ich kann die Dateiinformationen nicht im Laravel-Controller abrufen.
Wie kann ich dieses Problem lösen?
Zwei Dinge zu ändern:
Ändern Sie Ihre JS-Datei von:
data:{
logo:new FormData($("#upload_form")[0]),
},
Zu:
data:new FormData($("#upload_form")[0]),
Weil Sie das gesamte Formular senden möchten.
In deiner HTML:
Fügen Sie Ihrem Dateieingabefeld einen Namen hinzu
<input type="file" class="form-control" id="catagry_logo">
Zu:
<input type="file" name="logo" class="form-control" id="catagry_logo">
es funktioniert nicht für mich wegen dataType:'json'
. Wenn jemand eine Fehlermeldung erhält, entfernen Sie einfach dataType:'json'
.
Überprüfen Sie in Ihrem Controller, was Sie beim Posten erhalten:
echo dd(Input::all());
Überprüfen Sie das Dateiobjekt in PHP. Dies in PHP:
$_FILES
Request::file("logo");
Ja, Sie veröffentlichen keine Daten? Wird das Formular wirklich veröffentlicht?