Télécharger le fichier image à l'aide d'ajax et le codeur de code toujours lance l'erreur upload_path

J'ai essayé de télécharger un fichier en utilisant Codeigniter et AJAX, mais ma forme affiche toujours une erreur:

Le chemin de chargement n'est pas correct.

maquette

public function save($data) { $this->db->insert($this->table, $data); return $this->db->insert_id(); } 

Manette

 public function ajax_add(){ $this->_validate(); $data = array( 'nama'=>$this->input->post('post_nama'), 'jenis_kelamin'=>$this->input->post('post_jk'), 'alamat'=>$this->input->post('post_alamat'), 'email'=>$this->input->post('post_email'), 'telepon'=>$this->input->post('post_telepon'), 'status'=>$this->input->post('post_status') ); if(!empty($_FILES['photo']['name'])) { $upload = $this->_do_upload(); $data['photo'] = $upload; } $insert = $this->post->save($data); echo json_encode(array("status" => TRUE)); } private function _do_upload() { $config['upload_path'] = './upload/profil/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = 1000; //set max size allowed in Kilobyte $config['max_width'] = 3000; // set max width image allowed $config['max_height'] = 1500; // set max height allowed $config['file_name'] = round(microtime(true) * 1000); $this->load->library('upload', $config); if(!$this->upload->do_upload('photo')) //upload and validate { $data['inputerror'][] = 'photo'; $data['error_string'][] = 'Upload error: '.$this->upload->display_errors('',''); //show ajax error $data['status'] = FALSE; echo json_encode($data); exit(); } return $this->upload->data('file_name'); } 

Vue

 <form action="#" id="form" method="post" enctype="multipart/form-data"> <div class="form-group"> <label class="control-label">Foto</label> <input name="photo" type="file" id="photo"> <span class="help-block"></span> </div> <div class="form-group"> <button type="button" id="btnSave" onclick="insert()" class="btn btn-success"> <span class="glyphicon glyphicon-floppy-disk"></span> Simpan </button> <button type="reset" class="btn btn-default"> <span class="glyphicon glyphicon-floppy-disk"></span> Clear </button> </div> 

Ajax

 url = "<?php echo site_url('profil/ajax_add')?>"; // ajax adding data to database var formData = new FormData($('#form')[0]); $.ajax({ url : url, type: "POST", data: formData, contentType: false, processData: false, dataType: "JSON", success: function(data) { if(data.status) //if success close modal and reload ajax table { alert('Data Berhasil disimpan'); reset_form(); } else { for (var i = 0; i < data.inputerror.length; i++) { $('[name="'+data.inputerror[i]+'"]').parent().parent().addClass('has-error'); //select parent twice to select div form-group class and add has-error class $('[name="'+data.inputerror[i]+'"]').next().text(data.error_string[i]); //select span help-block class set text error string } } $('#btnSave').text('save'); //change button text $('#btnSave').attr('disabled',false); //set button enable }, error: function (jqXHR, textStatus, errorThrown) { alert('Error adding / update data'); $('#btnSave').text('save'); //change button text $('#btnSave').attr('disabled',false); //set button enable } }); } 

Lorsque je clique sur le bouton Enregistrer dans mon formulaire, le formulaire affiche toujours cette erreur:

Erreur de téléchargement: le chemin de chargement ne semble pas être valide.

Sur l'hébergement de serveurs publics (par exemple, les fournisseurs d'hébergement partagés), vous devrez fournir le chemin relatif complet à votre dossier de téléchargement, ce qui est différent d'un environnement local. Assurez-vous également d'avoir toutes les autorisations pour écrire un fichier dans ce répertoire

Vous pouvez utiliser sur un environnement localhost

  $config['upload_path'] = './upload/profil'; 

Mais sur un hébergement partagé, vous devrez être plus précis, normalement quelque chose comme

  $config['upload_path'] = '/home/yourserver/public_html/upload/profil'; 

Vous pouvez trouver cette page upload_path, par exemple dans votre compte cPanel page principale sur la colonne de gauche ou vous souhaitez appeler votre service d'assistance pour plus d'informations sur le chemin d'accès correct

Changer votre chemin

  $config['upload_path'] = './upload/profil/'; 

à

 $config['upload_path'] = 'base_url("upload/profil/")';