Загрузите 3 изображения из файла с различными типами ввода в codeigniter, используя ajaxFileUpload.js

Мне нужно загрузить три изображения из файла с разными типами ввода вместе с текстовым полем в функции единой кнопки отправки, здесь я загружаю свой код, этот код работает, когда я загружаю только один файл типа ввода, но у меня есть некоторые проблемы при загрузке более чем один тип файла ввода,

мой файл просмотра

                    <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>

Мой код ajax

$.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);
}
});

Мой контроллер

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));

Моя модель

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();
}

0

Решение

ajaxFileUpload не поддерживает загрузку нескольких файлов одновременно. У вас есть два варианта:

Используйте другой плагин для загрузки, такой как — http://hayageek.com/docs/jquery-upload-file.php

Вызовите свой код ajaxFileUpload три раза:

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')

Если вы хотите знать, когда все три файла загружены, вы можете использовать асинхронные, обещания или просто использовать обратные вызовы:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]