2009-06-09 7 views

Respuesta

58

en CodeIgniter 2, sólo hay que definir tipos permitidos así:

$config['allowed_types'] = '*'; 
+0

Funciona también en CodeIgniter 3 – moveax

2

Hasta ahora parece que solo sería posible mediante un truco.

He insertado un return true en la línea 556 en system/libraries/Upload.php.

+0

Prefiero hacer una biblioteca personalizada sobre la edición de la carpeta system/libraries /.La actualización a una nueva versión en CI usualmente significa reemplazar el viejo sistema/carpeta (excepto el sistema/aplicación /) con la última versión. CMIIW – andyk

4

La respuesta a su pregunta directa: No, no hay manera de hacer esto sin anular el núcleo

Para buena noticia es que puede evitar la piratería el núcleo, per the manual

Como un beneficio adicional, CodeIgniter permite que sus bibliotecas amplíen las clases nativas si simplemente necesita agregar alguna funcionalidad al una biblioteca existente. O incluso puede reemplazar bibliotecas nativas solo colocando versiones con nombres idénticos en su carpeta de aplicaciones/bibliotecas.

Por lo tanto, para tener una gota en el reemplazo para su biblioteca, se puede copiar a la carpeta upload.php

application/libraries 

, y luego agregar su lógica personalizada para ese archivo upload.php. Code Igniter incluirá este archivo cada vez que cargue la biblioteca de carga.

Alternativamente, puede crear su propia clase de cargador de subida personalizado que amplíe el original y solo refine la función is_allowed_filetype.

application/libraries/MY_Upload.php 
class MY_Upload Extends CI_Upload{ 
    function is_allowed_filetype(){ 
     //my custom code here 
    } 
} 

Usted querrá leer sobre the changelog cada vez que se va a actualizar, pero esto le permitirá mantener su código y el código del núcleo en universos separados.

+0

¿Cómo va la codificación de magento a Alan? –

4

Lo que hago es:

$ext=preg_replace("/.*\.([^.]+)$/","\\1", $_FILES['userfile']['name']); 
$fileType=$_FILES['userfile']['type']; 
$config['allowed_types'] = $ext.'|'.$fileType; 

Eso hace que todos los archivos en cada llamada a la función permitido automáticamente.

+3

Bueno, eso es una tontería! :-) –

0

Usted sólo tendrá que sustituir esta condición:

 if (! $this->is_allowed_filetype()) 
     { 
      $this->set_error('upload_invalid_filetype'); 
      return false; 
     } 

Con:

 if (count($this->allowed_types) && !$this->is_allowed_filetype()) 
     { 
      $this->set_error('upload_invalid_filetype'); 
      return false; 
     } 
0

$config['allowed_types'] = '*'; que cargará cualquier formato de archivo como .exe o .jpegs extra ...

0

si todos no funciona, entonces reorganizar el orden de los tipos permitidos al igual que en el primer formato de vídeo

$config['allowed_types'] = 'mp4|jpg|png|' 

Será obras en mi caso por lo común, si es posible probarlo.

Cuestiones relacionadas