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;
}
}