upload_path type files ejemplos _files php codeigniter mime-types codeigniter-2

type - upload files php codeigniter



CodeIgniter: "El tipo de archivo que está intentando cargar no está permitido". (10)

  1. Suba su archivo .wmv al servidor utilizando FTP / SFTP / scp / etc donde ejecuta la aplicación CodeIgniter
  2. En el servidor donde ha cargado el archivo .wmv, ejecute el siguiente código PHP

    <?php $file_path = ''CHANGE_THIS_TO_ABSOLUTE_FILE_PATH_THAT_YOU_HAVE_UPLOADED.wmv''; $finfo = finfo_open(FILEINFO_MIME); $mime = finfo_file($finfo, $file_path); var_dump($mime); ?>

  3. Guarde el código como mime.php

  4. Ejecutar en la terminal - $ php mime.php
  5. Si vuelca cualquier otro valor que ya tenga para wmv, añada ese valor en los tipos mime wmv.

También verifique PHP_VERSION en otras máquinas de desarrollo. finfo_open se introduce en PHP 5.3. La máquina de desarrollo en la que se está cargando puede tener una versión anterior de PHP o puede tener el tipo de mime correcto para wmv.

Estoy experimentando un problema de carga muy extraño. Aquí está el archivo de vista relevante:

<form action="http://localhost/index.php/temp/upload/" method="post" enctype="multipart/form-data"> <fieldset> <input type="file" name="userfile"/> <input type="submit" value="Upload"/> </fieldset> </form>

Y aquí está el método upload() de mi controlador de temp :

public function upload() { $config[''upload_path''] = FCPATH . ''uploads'' . DIRECTORY_SEPARATOR; assert(file_exists($config[''upload_path'']) === TRUE); $config[''allowed_types''] = ''avi|mpg|mpeg|wmv|jpg''; $config[''max_size''] = ''0''; $this->load->library(''upload'', $config); if ($this->upload->do_upload(''userfile'') === FALSE) { // Some error occured var_dump($this->upload->display_errors('''', '''')); var_dump($_FILES); } else { // Upload successful var_dump($this->upload->data()); } }

Cuando cargo un video AVI, todo funciona bien. Cuando cargo, digamos, un video WMV, obtengo los siguientes volcados de var:

string ''The filetype you are attempting to upload is not allowed.'' (length=57) array ''userfile'' => array ''name'' => string ''wmv.wmv'' (length=7) ''type'' => string ''video/x-ms-wmv'' (length=14) ''tmp_name'' => string ''C:/wamp/tmp/php2333.tmp'' (length=23) ''error'' => int 0 ''size'' => int 83914

La extensión "wmv" se interpreta como el tipo MIME: video/x-ms-wmv . Esto debería estar bien ya que mi config / mimes.php tiene lo siguiente:

''wmv'' => array(''video/x-ms-wmv'', ''audio/x-ms-wmv'')

Es una situación similar cuando intento subir otros archivos. Hasta ahora, el único que parece funcionar es mi prueba de video AVI.

¿Alguna idea de lo que podría estar mal?

ACTUALIZACIÓN 1:

Una mi máquina, solo carga AVI. En la máquina de otro desarrollador, no se cargan archivos. En una máquina de otro desarrollador, todos los archivos compatibles se cargan. ¿Son estos problemas de navegador o servidor?


$ config ["allowed_types"] = "*";


¿Intentó usar tipos mime en lugar de extensiones en $ config [''allowed_types'']?

escríbelo así

$config["allowed_types"] = "video/x-msvideo|image/jpeg|video/mpeg|video/x-ms-wmv";


Cambiar en la aplicación / config / Mimes.php


Estás usando Firefox, ¿verdad?

Puede intentar buscar en system/libraries/Upload.php línea 199:

$this->_file_mime_type($_FILES[$field]);

Cambia esa línea a:

$this->_file_mime_type($_FILES[$field]); var_dump($this->file_type); die();

Luego, cargue su archivo .wmv . Mostraría algo así como application/octet-stream o lo que sea. Añádelo a tus mimes.php . Espero que esta ayuda =)

Respuesta similar here

Algunos enlaces:


Esto es realmente un error en el núcleo ... Actualicé a la última versión de CI y el error desapareció.


Recientemente tuve algunos problemas muy similares con la clase de carga de Codeigniter.

Los * allowed_types * no parecen estar funcionando. Por ejemplo, quería permitir que se subieran imágenes .PNG, pero no las permitía a través de su filtro. Terminé investigando más. Permití que todos los tipos de archivos se cargaran temporalmente, cargué .PNG y luego volqué los datos de carga ( $ this-> upload-> data ()); ) Por alguna razón, ¡pensó que el tipo MIME era text / plain ! Esto podría estar relacionado con tu problema.

Hay algunas soluciones a esto. Encontré navegando en algunos foros donde puedes modificar / extender la clase o el núcleo, pero no funcionaron para mí, lo siento. Creo que es un error Codeigniter Core (creo que el problema ya se ha abierto con EllisLabs). ¡Terminé por codificar la maldita cosa de todos modos! Bueno, espero que esto les ayude a algunos.

Ejemplo básico / solución alternativa

//replace with your allowed MIME types if ($_FILES[''name_of_form_upload''][''type''] != ''image/jpeg'' && $_FILES[''name_of_form_upload''][''type''] != ''image/png'' && $_FILES[''name_of_form_upload''][''type''] != ''image/gif'') { $data[''message''] = ''<div class="message">That file type is not allowed!</div>''; $this->load->view(''home_view'', $data); } else { //run upload code }

Editar: Formateo / Gramática


Respuesta para cargar el archivo .doc en CodeIgniter

Cambia esto

''doc'' => ''application/msword'',

Con esto en la línea no 95 (archivo application/config/mimes.php )

''doc'' => array(''application/vnd.ms-word'',''application/msword''),


Verifica tu archivo mimes.php en application / config. Debería devolver una matriz de tipos de mime, por ejemplo, return $mimes; al final del archivo o return array(..... en el inicio de la matriz de mimos.


si necesita una forma simple de resolver esto, hay una solución fácil para ello. abra el archivo "system / libraries / Upload.php"

line no 465 you will see if ( ! $this->is_allowed_filetype()) { $this->set_error(''upload_invalid_filetype'', ''debug''); return FALSE; } just make it true if ( ! $this->is_allowed_filetype()) { $this->set_error(''upload_invalid_filetype'', ''debug''); return TRUE; } note : it will stop your all file type validation.