multiple files ejemplos _files php codeigniter mime-types image-uploading

php - files - CodeIgniter "No está permitido el tipo de archivo que está intentando cargar".



upload image php codeigniter (6)

Reemplazando el archivo codeigniter 2.1.0 system / libraries / upload.php con la versión 2.1.2 la librería upload.php resuelve el problema. Espero que esto ayude

Estuve buscando mucho y encontré muchas preguntas sobre este problema, desafortunadamente ninguna de las respuestas me ayudó.

Estoy intentando subir una imagen png, y estoy recibiendo el siguiente error:

El tipo de archivo que está intentando cargar no está permitido.

Estaba siguiendo esta guía de CI para construir mi código: http://codeigniter.com/user_guide/libraries/file_uploading.html

Esto es lo que obtuve:

ver archivo:

[..] <?= form_open_multipart() ?> <input type="file" name="userfile" size="20" /> <br /><br /> <input type="submit" value="upload" /> <?= form_close() ?> [..]

Mi controlador:

$config[''upload_path''] = ''./uploads/''; $config[''allowed_types''] = ''gif|jpg|png''; $config[''max_size''] = ''100''; $config[''max_width''] = ''1024''; $config[''max_height''] = ''768''; $this->load->library(''upload'', $config); $xx = array(''upload_data'' => $this->upload->data()); $mimetype= $xx[''upload_data''][''file_type'']; var_dump(''Mime: '' . $mimetype); var_dump($_FILES); if ( !$this->upload->do_upload()) { Notice::add($this->upload->display_errors(), ''error''); } else { $data[''upload_data''] = $this->upload->data(); }

Como pueden ver, estoy intentando var_dump el tipo mime y el resultado está vacío.

Cuando hago var_dump($_FILES) parece que todo está bien:

array(1) { ["userfile"]=> array(5) { ["name"]=> string(14) "imageofm.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(18) "/var/tmp/php5cDAZJ" ["error"]=> int(0) ["size"]=> int(358) } }

Además, obtuve ''png'' => array(''image/png'', ''image/x-png''), line, en mi config/mimes.php .

Sin embargo, sucede con todas las imágenes (aún no se han probado otras extensiones).

Agradecería cualquier intento de ayuda.


Otra solución es habilitar extension=php_fileinfo.dll en php.ini


Acabo de agregar esta línea en mime.php en la línea 34 y pptx ahora está cargando. probarlo en un servidor real

''pptx'' => array (''application / vnd.openxmlformats-officedocument.wordprocessingml.document'', ''application / zip''),


Agregue ''text / plain'' a la matriz CSV en las matrices config / mimes.php a $ mimes


Simplemente edite el archivo mimes.php en application / config / mimes.php y reemplace la línea para el csv por este:

''csv'' => array(''application/vnd.ms-excel'', ''text/anytext'', ''text/plain'', ''text/x-comma-separated-values'', ''text/comma-separated-values'', ''application/octet-stream'', ''application/vnd.ms-excel'', ''application/x-csv'', ''text/x-csv'', ''text/csv'', ''application/csv'', ''application/excel'', ''application/vnd.msexcel'')


$this->load->library(''upload''); $this->upload->set_allowed_types(''*''); class MY_Upload extends CI_Upload { function is_allowed_filetype() { if (count($this->allowed_types) == 0 OR ! is_array($this->allowed_types)) { $this->set_error(''upload_no_file_types''); return FALSE; } if (in_array("*", $this->allowed_types)) { return TRUE; } $image_types = array(''gif'', ''jpg'', ''jpeg'', ''png'', ''jpe''); foreach ($this->allowed_types as $val) { $mime = $this->mimes_types(strtolower($val)); // Images get some additional checks if (in_array($val, $image_types)) { if (getimagesize($this->file_temp) === FALSE) { return FALSE; } } if (is_array($mime)) { if (in_array($this->file_type, $mime, TRUE)) { return TRUE; } } else { if ($mime == $this->file_type) { return TRUE; } } } return FALSE; } }