merhaba,
ajax ile basit bir imaj upload işlemim var. ajax'tan object olarak gelen veriyi laravel fonksiyonunda yine object olarak karşılayıp ilgili yere kaydetme işlemini yaptırmak istiyorum.
jquery ajax fonksiyonu içerisinde input file alanından gelen veriyi alert ettiğim zaman object olarak görebiliyorum; ancak laravel'in Input::hasFile('inputAlani') fonksiyonu bana false döndürüyor. file get fonksiyonu da null döndürüyor. Nerede hata yapıyorum bir türlü bulamadım. Yardımcı olacak biri olursa sevinirim.
Laravel fonksiyonu:
public function uploadAjaxFile()
{
$destinationPath = base_path(). '/' . "upload" . '/';
var_dump(Input::hasFile('basicModuleImage')); exit; //returns false
if(Input::hasFile('basicModuleImage')){
$file = Input::file('basicModuleImage'); // your file upload input field in the form should be named 'file'
// Declare the rules for the form validation.
$rules = array('myfile' => 'mimes:jpg,jpeg,bmp,png');
$data = array('myfile' => Input::file('myfile'));
// Validate the inputs.
$validation = Validator::make($data, $rules);
if ($validation->fails()) {
return Response::json('error', 400);
}
$filename = $file->getClientOriginalName();
$uploadSuccess = Input::file('myfile')->move($destinationPath, $filename);
if( $uploadSuccess ) {
return Response::json('success', 200);
} else {
return Response::json('error', 400);
}
}
exit;
}
Ajax ve html fonksiyonu
<form method="post" action="">
<input type="file" id="basicModuleImage" name="basicModuleImage" />
</form>
<script>
$(document).ready(function(){
$('#basicModuleImage').change(function () {
sendFile(this.files[0]);
});
function sendFile(file) {
$.ajax({
type: 'post',
url: '/uploadAjaxFile',
data: file,
enctype: 'multipart/form-data',
success: function (data) {
alert(data);
},
xhrFields: {
// add listener to XMLHTTPRequest object directly for progress (jquery doesn't have this yet)
onprogress: function (progress) {
// calculate upload progress
var percentage = Math.floor((progress.total / progress.totalSize) * 100);
// log upload progress to console
console.log('progress', percentage);
if (percentage === 100) {
console.log('DONE!');
}
}
},
processData: false,
contentType: file.type
});
}
});
</script>