varios valores texto mostrar manejo leer file_get_contents ejemplos ejemplo archivos archivo _files php file-type

valores - La mejor forma de reconocer un tipo de archivo en php



leer y mostrar archivo de texto en php (4)

Creo que te refieres a finfo_file () para descubrir el tipo mimetype

de php.net Ejemplo:

<?php $finfo = finfo_open(FILEINFO_MIME); // return mime type ala mimetype extension foreach (glob("*") as $filename) { echo finfo_file($finfo, $filename) . "/n"; } finfo_close($finfo); ?>

¿Cuál es la mejor manera de descubrir el tipo de archivo de un archivo dentro de php? Escuché que el navegador puede ser engañado, ¿cuál es la mejor forma de hacerlo?


Mira "números mágicos". Los primeros pocos bytes de archivos generalmente identifican qué tipo de archivo es. Por ejemplo, los primeros pocos bytes de un GIF son 47 49 46 38 37 61 o 47 49 46 38 39 61, ASCII para GIF89a o GIF87a. Hay muchos otros "números mágicos". Ver http://en.wikipedia.org/wiki/Magic_number_(programming)#Magic_numbers_in_files

EDITAR: Creo que esto es más confiable que las funciones MIME en PHP.


No puede confiar en Content-Type devuelto por el navegador. Se basa en la extensión de archivo y se puede engañar fácilmente.

Como stalepretzel lo mencionó, la mejor manera de adivinar el tipo de contenido del archivo es usar números mágicos. Si su servidor se ejecuta en una máquina * nix, puede usar esta función:

<?php function get_file_type($file) { if(function_exists(''shell_exec'') === TRUE) { $dump = shell_exec(sprintf(''file -bi %s'', $file)); $info = explode('';'', $dump); return $info[0]; } return FALSE; } ?> Usage: $file_type = get_file_type(''my_file_name.ext'');

PD: compruebe /usr/share/magic.mime para obtener más información.


Puedes usar finfo_file

<?php echo finfo_file(finfo_open(FILEINFO_MIME), "foo.png"); ?>