Я тоже столкнулся с этой проблемой. Данные $_FILES
отправляются с разнородной структурой (из-за атрибута multiple=""
), поэтому codeigniter не может их обработать. Подготовьте это перед загрузкой:
$arr_files = @$_FILES['userfile'];
$_FILES = array();
foreach(array_keys($arr_files['name']) as $h)
$_FILES["file_{$h}"] = array( 'name' => $arr_files['name'][$h],
'type' => $arr_files['type'][$h],
'tmp_name' => $arr_files['tmp_name'][$h],
'error' => $arr_files['error'][$h],
'size' => $arr_files['size'][$h]);
Тогда в функции цикла используйте это:
$this->load->library('upload');
$arr_config = array( 'allowed_types' => 'gif|jpg|png',
'upload_path' => 'url_path/');
foreach(array_keys($_FILES) as $h) {
// Initiate config on upload library etc.
$this->upload->initialize($arr_config);
if ($this->upload->do_upload($h)) {
$arr_file_data = $this->upload->data();
}
}
Пояснение:
Я просто изменяю структуру $_FILES
на общую структуру, которая отправляется по умолчанию <input type="file" />
, и запускаю цикл, выбирая все их имена ключей.