Why my code does not work and it does not upload image in mysqli db using ajax in codeigniter?
When I click on upload , it does not say anything and image does not upload.
Here is view form.
<form class="form-horizontal" id="submit" enctype="multipart/form-data">
<div class="form-group">
<input type="text" name="title" class="form-control" placeholder="title"/>
</div>
<div class="form-group">
<input type="file" name="file" class="form-control" placeholder="title"/>
</div>
<div class="form-group">
<button class="btn btn-primary" id="btn_upload">Upload</button>
</div>
</div>
</form>
In view file here is ajax call:
<script type="text/javascript">
$(document).ready(function(e){
e.preventDefault();
$.ajax({
url: '<?php echo base_url(); ?>img_controller/do_upload',
type: 'post',
data: new formData(this),
processData: false,
cache: false,
async: false,
success: function(data){
alert("image has been uploaded.")
}
});
});
</script>
Controller Code:
<?Php
defined('BASEPATH') OR exit('No direct script access allowed');
class img_controller extends CI_Controller{
public function __construct(){
parent::__construct();
$admin=$this->session->userdata('admin');
$this->load->model('upload_model');
if(empty($admin)){
$this->session->set_flashdata('msg','Your session has been expired.');
redirect(base_url().'admin/login/index');
}
}
public function index(){
$this->load->view('img_view');
}
public function do_upload(){
$config['upload_path'] = '.\Public\Uploads';
$config['allowed_types'] = 'gif|png|jpg';
$config['encrypt_name'] = TRUE;
$this->load->library('upload',$config);
if($this->upload->do_upload('file')){
$data = array('upload_data'=>$this->upload->data());
$title = $this->input->post('title');
$image = $data['upload_data']['file_name'];
$result = $this->uplod_model->save_upload($title,$image);
echo json_encode($result);
}
}
}
?>
Finally Model Code:
<?php
class upload_model extends CI_Model{
function save_upload($title,$image){
$data = array('title' =>$title,'file_name'=>$image);
$result = $this->db->insert('image_db',$data);
return $result;
}
}
?>