CodeIgniter több file feltöltése egyszerre

Lássuk hogyan lehet egyszerre több filet feltölteni CodeIgniter keretrendszerben.
/*
 * képfeltöltés főoldal
 */
 function feltoltes()
 {
 /* alapvető üzenetek megjelenítéséhez szükséges változók */
 $display['error'] = array();
 $display['success'] = array();

/* képek feltöltése */
 if(isset($_POST['submit']))
 {
 /* feltöltés utáni F5 megkerülése */
 if($this->session->flashdata(‘justUploaded’) == 1)
 {
 redirect(‘/’);
 }

/* alapvető változók beállítása */
 $files = array();
 $types = array(‘image/gif’, ‘image/jpeg’, ‘image/pjpeg’, ‘image/png’, ‘image/x-png’);
 $maxSize = 2097152;
 $max = count($_FILES['image']['name']);

for($i=0; $i<$max; $i++)         {              if(is_uploaded_file($_FILES['image']['tmp_name'][$i]))             {                  $files[$i]['name'] = $_FILES['image']['name'][$i];                  $files[$i]['type'] = $_FILES['image']['type'][$i];                  $files[$i]['tmp_name'] = $_FILES['image']['tmp_name'][$i];                  $files[$i]['error'] = $_FILES['image']['error'][$i];                  $files[$i]['size'] = $_FILES['image']['size'][$i];             }          }         /* ha vannak feltöltött fileok */          if(count($files))         {             /* ha 1 galériába szeretnénk  szervezni a feltöltött képeinket */              if($this->input->post(‘gallery’) == ‘on’)
 $gallery = time();
 else
 $gallery = 0;
 /* feltöltött fileok feldolgozása */
 foreach($files as $key=>$value)
 {
 $valid = FALSE;
 $tooBig = FALSE;
 foreach($types as $type)
 {
 if($files[$key]['type'] ==  $type) $valid = TRUE;
 }

if($files[$key]['size'] >  $maxSize) $tooBig = TRUE;

if($valid == FALSE) $display['error'][] = $files[$key]['name'].’ feltöltése sikertelen volt, nem támogatott file típus miatt.’;
 elseif($tooBig == TRUE) $display['error'][] = $files[$key]['name'].’  feltöltése sikertelen volt, a file mérete meghaladja a 2 megabyte-os  limitet.’;
 elseif($valid == TRUE)
 {
 $image = time().’-’.$files[$key]['name'];
 /* képfeltöltése */
 move_uploaded_file($files[$key]['tmp_name'], $this->absolute_path.$image);

/* thumbnail létrehozása */
 $this->_generateThumbnail($files[$key], $this->absolute_path.$image, $image);

$display['success'][$key]['id'] =  $this->uploadModel->insertImage($image,  $this->input->post(‘email’), $this->input->post(‘public’),  $gallery);
 $display['success'][$key]['image'] = $files[$key]['name'];
 $display['success'][$key]['file_name'] = $image;
 }

unset($files[$key]);
 }
 /* feltöltés utáni F5 megkerülése */
 $this->session->set_flashdata(‘justUploaded’, 1);
 }

}

$display['folder'] = date(“Y-m-d”);

/* megjelenítés */
 $this->load->helper(‘form’);
 $this->load->view(‘kepfeltolto’, $display);
 }


Látható, hogy nem egy nagy durranás az egész, konkrét megoldásból ollóztam ki azért van benne 1-2 hivatkozás, más függvényekre.
Megjelenítés résznek valahogy így kell kinéznie:
<form method=”post” action=”feltoltes”>
 <input type=”file” name=”image[]” />
 <input type=”file” name=”image[]” />
 <input type=”file” name=”image[]” />
 <input type=”file” name=”image[]” />
 <input type=”submit” name=”submit” value=”Feltöltés” />
 </form>


Következő cikkben folytatjuk a felhasználó loggolást.