2016-04-21 18 views
0

Ich habe ein Raster und in dieser Liste von Daten gezeigt und jede Zeile hat eine Bearbeitungsaktion.Wie lade ich Dateien mit Ajax in Codeigniter hoch?

Also wenn Edit Knopf drücken, öffnet sich ein Popup und in diesem ich möchte Daten aktualisieren und ein Bild in Bezug auf diese ausgewählte Zeile hochladen.

Die Daten wurden erfolgreich aktualisiert, aber das Image wird nicht im Ordner gespeichert.

In-Code Was ich tat:

In Ajax, ich alle Daten serialisiert werden, wenn das Formular einreichen, sondern lädt Datendatei Post nicht zeigt, ist so diesen ich tue -

var mts = $('#userfile').val(); 
    var formdata = $('form[name=data_popup]').serialize()+'&IMG_URI='+mts; 
    console.log(formdata); 

HTML-Code:

<form action="#" method="post" enctype="multipart/form-data" name="data_popup"> 
<input type="file" name="userfile"> 
</form> 

JQuery-Code:

function update_cat(){ 
    var mts = $('#userfile').val(); 
    var formdata = $('form[name=data_popup]').serialize()+'&IMG_URI='+mts; 
    console.log(formdata); 
     $.ajax({ 
      url: '<?=$this->config->base_url()?>admin_panel/update_data/', 
      type: 'post', 
      data: formdata 
     }).done(function(data) { 
     console.log(data); 
     }); 
    } 

Codeigniter Model Code:

$this->load->library('upload'); 
      $config['upload_path'] = "./application/assets/images/logo"; 
      $config['allowed_types'] = "gif|jpg|png|jpeg"; 
      $config['file_name'] = date('dmYHis'); 
      $this->upload->initialize($config); 
      $this->load->library('upload', $config); 
      $this->upload->do_upload('userfile'); 
      $data_upload_files = $this->upload->data(); 
      $image = $data_upload_files[file_name]; 
+0

Formularname 'name =" builder_popup "' nicht 'data_popup' – Saty

+0

Ja, ich tat schon, aber nichts Neues passiert –

+0

Sie können' $ ("# formID"). Ajaxsubmit' anstelle von '$ .ajax' verwenden posten ganze form sofort es wird form.js datei –

Antwort

0

Verwenden Formdata für Ajax Upload

var formdata = new FormData($('form[name="data_popup"]')[0]); 
0

Dies sollte für Sie arbeiten.

HTML

<form action="#" method="post" enctype="multipart/form-data" name="data_popup"> <input type="file" name="userfile" id="userfile"> </form>

JavaScript 

function update_cat(){ 
    var formData = new FormData(); 

    var mts = $('#userfile').get(0).files[0]; 

    formData.append('userfile', mts); 

     $.ajax({ 
      url: '<?=$this->config->base_url()?>admin_panel/update_data/', 
      method: 'post', 
      data: formdata, 
      processData: false, 
      cache: false, 
      contentType: false 
     }).done(function(data) { 
      console.log(data); 
     }); 
} 


PHP 

<?php 

$this->load->library('upload'); 

$config['upload_path'] = "./application/assets/images/logo"; 
$config['allowed_types'] = "gif|jpg|png|jpeg"; 
$config['file_name'] = date('dmYHis'); 

$this->upload->initialize($config); 

$this->upload->do_upload('userfile'); 

$data_upload_files = $this->upload->data(); 
$image = $data_upload_files['file_name']; 

Anmerkung: Ich habe nicht viel tun auf dem PHP-Teil, da ich nicht über ein umfassendes Verständnis von dem, was Sie mit der Datei machen wollen.

Vergewissern Sie sich auch, dass Sie die javaScript-Funktion irgendwie aufrufen.

+0

console sagt dateien ist undefien, var mts = $ ('# userfile'). get (0) .files [0]; –

+0

Haben Sie den HTML-Teil geändert? Ich habe eine ID mit dem Namen 'userfile' hinzugefügt. – Amir

Verwandte Themen