form_input form example convert_accented_characters php codeigniter file-upload codeigniter-2

php - form - Codeigniter y HTML5: intentar subir varias imágenes a la vez



form_input php (3)

El loop que necesitas:

for($i=0; $i<count($_FILES[''name'']); $i++){ if ($_FILES[''error''][$i] == 0) { //do your stuff here, each image is at $_FILES[''tmp_name''][$i] } }

Tenga en cuenta que no utiliza la clase de carga de CI, sino PHP simple, que normalmente me resulta más fácil de trabajar en lugar de la clase de CI.

Ver se parece a esto

<?=form_open_multipart(''upload/process'');?> <input type="file" multiple="multiple" name="userfile[]" id="userfile" /> <?=form_submit(''upload'', ''Upload'');?> <?=form_close();?>

Quiero que el usuario pueda subir varias imágenes a la vez. una vez cargado, quiero hacer una entrada de los detalles de la imagen en la base de datos, y finalmente mover la imagen a la carpeta de carga.

Tengo conocimiento básico de Codeigniter

ps: no quiero usar complementos de carga de uploadify o similar. tratando de mantenerlo tan liviano como sea posible

Actualice que este es el tipo de matriz que obtengo cuando pruebo var_dump ($ _ FILES [''userfile'']). qué tipo de ciclo debería usar para separar los datos de las imágenes respectivas.

array ''name'' => array 0 => string ''01.jpg'' (length=6) 1 => string ''1 (26).jpg'' (length=10) ''type'' => array 0 => string ''image/jpeg'' (length=10) 1 => string ''image/jpeg'' (length=10) ''tmp_name'' => array 0 => string ''C:/wamp/tmp/php2AC2.tmp'' (length=23) 1 => string ''C:/wamp/tmp/php2AD3.tmp'' (length=23) ''error'' => array 0 => int 0 1 => int 0 ''size'' => array 0 => int 409424 1 => int 260343


Me encontré con este problema también. Los datos $_FILES se envían como una estructura difentada (debido al atributo multiple="" ) por lo que codeigniter no puede manejarlo. Anteponga esto antes del proceso de carga:

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

Luego, en la función de bucle, usa esto:

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

Explicación:
Simplemente cambio la estructura de $_FILES a la estructura común que se envía en un <input type="file" /> predeterminado y ejecuta un ciclo, obteniendo todos sus nombres de clave.