I'm trying to create upload function in Laravel 5.7 using Ajax request. I'm getting null value in the database after writing this code. So, all other data are being inserted except the file that is returning empty value.
tasks.blade.php
<form method="post" id="addTask_form" name="addtask" enctype="multipart/form-data">
.......................
<div class="form-group">
<label>File</label>
<input type="file" name="file" id="file">
</div>
.............
</div>
<div class="modal-footer">
................
</div>
</form>
TasksController.php
function postdata(Request $request)
{
$validation = Validator::make($request->all(), [
.......
'file' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048',
'status' => 'required',
]);
.............
if ($validation->fails())
{
foreach ($validation->messages()->getMessages() as $field_name => $messages)
{
...........
}
}
else
{
if($request->get('button_action') == 'insert')
{
if($request->hasFile('file') && $request->file('file')->isValid()){
$file = $request->file('file');
$file_name = str_random(30) . '.' . $file->getClientOriginalExtension();
$file->move(base_path() . '/assets/img', $file_name);
}
$task = new Task($request->input());
$task->save();
}
$output = array(
'error' => $error_array,
'success' => $success_output
);
echo json_encode($output);
}
Thank you
$('#addTask_form').on('submit', function(event){ event.preventDefault(); var form_data = $(this).serialize(); $.ajax({ url:"{{route('postdataroute')}}", method:"POST", data:form_data, dataType:"json", success:function(data) { if (data.error.length > 0) ..................