2016-10-06 5 views
0

Je dois télécharger trois images à partir de différents fichiers de type d'entrée avec champ de texte dans la fonction de bouton de soumission unique, ici je télécharge mon code, ce code fonctionne quand i télécharger un seul fichier de type d'entrée, mais j'ai quelques problèmes tout en télécharger un plus d'un fichier de type d'entrée,Télécharger 3 images de différents type de fichier d'entrée dans le codeigniter en utilisant ajaxFileUpload.js

mon fichier de vue

    <form method="POST" action="" id="employees" enctype="multipart/form-data">     
        <div class="col-md-8"> 
          <input type="text" class="form-control" name="e_blood" id="e_blood" value=""/> 
         </div> 
         </div> 
        </div> 

        <div class="row margin-bottom-10"> 
         <div class="form-group"> 
         <label class="col-md-4 control-label">ID Proof</label> 
         <div class="col-md-8"> 
          <input type="file" class="form-control" name="e_idproof" id="e_idproof"/> 
         </div> 
         </div> 
        </div> 

        <div class="row margin-bottom-10"> 
         <div class="form-group"> 
         <label class="col-md-4 control-label">Photo</label> 
         <div class="col-md-8"> 
          <input type="file" class="form-control" name="e_photo" id="e_photo"/> 
         </div> 
         </div> 
        </div> 

        <div class="row margin-bottom-10"> 
         <div class="form-group"> 
         <label class="col-md-4 control-label">Pre-Employment proof</label> 
         <div class="col-md-8"> 
          <input type="file" class="form-control" name="e_preemp" id="e_preemp"/> 
         </div> 
         </div> 
       </form> 
       <button type="submit" class="btn red" onclick="add_employee();" name="submit" data-dismiss="modal">Submit</button> 
     </div> 

mon ajax code

$.ajaxFileUpload({ 
      url    :'<?php echo base_url(); ?>index.php?/employee_master_table/addemployee', 
      secureuri  :false, 
      fileElementId :'e_idproof', 
      dataType  : 'json', 
      data   : {       'e_blood':$("#e_blood").val(), 
           'e_exp':$("#e_exp").val(), 
           'e_group':$("#e_group").val(), 
           }, 
      success : function (data, status) 
      { 
       alert(data.msg); 
      } 
     }); 

Mon contrôleur est

public function addemployee(){     
     $this->load->helper('url'); 
     $status = ""; 
     $msg = ""; 
     $file_element_name = 'e_idproof';    
     if (empty($_POST['e_blood'])) 
     { 
      $status = "error"; 
      $msg = "Please enter a e_blood"; 
     }    
     if ($status != "error") 
     { $config['upload_path'] = './assets/uploads/'; 
      $config['allowed_types'] = 'gif|jpg|png|doc|txt'; 
      $config['max_size'] = 1024 * 8; 
      //$config['encrypt_name'] = TRUE; 
      //$config['encrypt_name'] = false; 
      $newname=$_POST['e_id']."_".$_POST['e_name']; 
      $config['file_name'] = $newname; 

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

      if (!$this->upload->do_upload($file_element_name)) 
      { 
       $status = 'error'; 
       $msg = $this->upload->display_errors('', ''); 
      } 
      else 
      { 
       $data = $this->upload->data();     
       $this->load->database();   
       $this->load->model('kaspon_employee_table'); 
       $file_id = $this->kaspon_employee_table->addemployee($data['file_name'],$_POST['e_blood'], $_POST['e_exp'], $_POST['e_group']);     
       if($file_id) 
       { 
        $status = "success"; 
        $msg = "File successfully uploaded"; 
       } 
       else 
       { 
        unlink($data['full_path']); 
        $status = "error"; 
        $msg = "Something went wrong when saving the file, please try again."; 
       } 
      } 
      @unlink($_FILES[$file_element_name]); 
      }    
     } 
     echo json_encode(array('status' => $status, 'msg' => $msg)); 

Mon modèle est

public function addemployee($filename,$e_id,$e_name,$r_man, 
    $dateofbirth,$doj,$e_qual,$e_address,$e_paddress,$e_email, 
    $e_mobile,$e_e_con,$e_blood,$e_exp,$e_group){ 
     $data=array( 
      'photo'  => $filename, 
      'bloodgrp'=>$e_blood, 
      'experience'=>$e_exp, 
      'division'=>$e_group, 
     ); 
     $this->db->insert('employeemanager', $data); 
     return $this->db->insert_id(); 
    } 

Répondre

0

ajaxFileUpload ne prend pas en charge le téléchargement de plusieurs fichiers à la fois. Vous avez deux options:

Utilisez un plugin de téléchargement différent, par exemple - http://hayageek.com/docs/jquery-upload-file.php

Appelez votre code ajaxFileUpload trois fois:

function upload_file (file_input_id, callback) { 
    $.ajaxFileUpload({ 
     url : '<?php echo base_url(); ?>index.php?/employee_master_table/addemployee', 
     secureuri: false, 
     fileElementId: file_input_id, 
     dataType: 'json', 
     data: { 
      'e_blood':$("#e_blood").val(), 
      'e_exp':$("#e_exp").val(), 
      'e_group':$("#e_group").val(), 
     }, 
     success: function (data, status) { 
      callback() 
     } 
    }) 
} 

upload_file('e_idproof') 
upload_file('e_photo') 
upload_file('e_preemp') 

Si vous voulez savoir quand les trois fichiers sont téléchargés peuvent utiliser async, promet ou simplement aller simple avec des rappels:

upload_file('e_idproof', function() { 
    upload_file('e_photo', function() { 
     upload_file('e_preemp', function() { 
      console.log('all three files uploaded') 
     }) 
    }) 
})