Полагаю, я бы просто поделился, как я обрабатываю несколько загрузок в CI, это немного отличается от вашего метода:
Форма выглядит следующим образом:
<?php echo form_open_multipart('upload/multiple_upload');?>
<input type="file" name="userfile[]" size="20" /><br />
<input type="file" name="userfile[]" size="20" /><br />
</form>
Функция Upload / multiple_uploadКонтроллер выглядит следующим образом:
function multiple_upload()
{
$config['upload_path'] = './userpics/originals/'; // server directory
$config['allowed_types'] = 'gif|jpg|png'; // by extension, will check for whether it is an image
$config['max_size'] = '512'; // in kb
//$config['max_width'] = '1024';
//$config['max_height'] = '768';
$this->load->library('myupload');
$error = array(); $data = array();
for ($i=0;$i<count($_FILES['userfile']['name']);$i++) {
$this->myupload->initialize($config);
if (!$this->myupload->do_upload('userfile',$i)) {
$error[] = $this->myupload->display_errors();
}
$data[$i] = $this->myupload->data(); //gradually build up upload->data()
}
if ( count($error) > 0 )
{
print_r($error);
}
else
{
print_r($data);
}
}
На этом этапе я сделал копию класса загрузки CI и вставил ее в каталог библиотеки моих приложений.Несколько изменений должны быть сделаны.Я назвал это myupload.
@ Строка 143:
public function do_upload($field = 'userfile')
изменить на
public function do_upload($field = 'userfile', $i = 0)
Любые строки в этой функции выше строки 200, вы должны добавить [$ i] до конца переменных $ _FILES.
Пример:
is_uploaded_file($_FILES[$field]['tmp_name'])
изменить на:
is_uploaded_file($_FILES[$field]['tmp_name'][$i])
Необходимо обновить 9 строк.