2009-03-16 26 views
6

Estoy buscando la mejor (posible en la mayoría de las instalaciones de PHP 5.2 y todavía desarrollada activamente) forma de detectar un tipo MIME de archivos en PHP.Detectando tipo MIME en PHP

Conozco el método mime_content_type() y la extensión Fileinfo, sin embargo, mime_content_type() no es confiable y está obsoleto, y Fileinfo no viene en una instalación PHP "estándar" (5.2).

¿Tengo alguna otra opción?

Respuesta

5

¿Has consultado este paquete PEAR?

http://pear.php.net/package/MIME_Type

+0

Gracias. No es ideal, ya que todo lo que realmente hace es intentar usar los dos métodos que ya mencioné, otro que no funcionará en todos los sistemas (es decir, Windows), y luego vuelve a la detección por extensión, pero parece ser mi mejor opción Siendo por el momento. –

0

Usted podría hacer un subpetición al servidor web está ejecutando, entonces analizar la cabecera para obtener el tipo MIME de esa manera. Como esto es lento, use curl para obtener solo los encabezados, no la solicitud completa. Esto es importante si está buscando archivos de gran tamaño.

Si está ejecutando Apache y usa php como módulo, eche un vistazo a la función VIRTUAL. es una forma más rápida de hacer una subpetición que usar curl.

De lo contrario, puede buscar el tipo mime por extensión. Esto hará que todos los archivos bien nombrados funcionen.

11

(lol lo siento me di cuenta de esto hace meses se le preguntó como estaba terminando. Bueno. Bien podría añadir este ...)

Si se trata de un servidor * nix que podría utilizar archivo de comandos.

file -bi <filepath> 

Tendría que usar "exec" en PHP para hacer eso, supongo? Soy nuevo en PHP así que no me mencionen en esto, pero ...

$content_type = exec("file -bi " . escapeshellarg($filepath)); 

No he probado que lo que puede necesitar para escapar de la cadena de ruta y dar formato a la salida.

No sé si esto será más confiable que los otros métodos.

+2

Uso el archivo -b --mime-type $ filename, pero ¡buena respuesta! – icco

+0

gracias gracias gracias !!!! – Kama