Pregunta

Estoy planeando usar este programa del sistema/USR/bin/archivo para determinar el tipo de contenido de archivo cargado y luego actuar en consecuencia.

¿Es esta una buena idea o hay cosas que debería tener en cuenta? (O use algo completamente diferente)

¿Fue útil?

Solución

PHP tiene el información del archivo Extensión, que utiliza el mismo mecanismo pero es nativo de PHP.

Otros consejos

mime_content_type y finfo_file son los métodos preferidos para determinar un tipo MIME (cualquiera de los cuales a menudo se habilita en la mayoría de las distribuciones de PHP). Usan la misma base de datos Magic.Mime que la herramienta externa, por lo que lo usaría solo como alternativo.

El uso de la herramienta externa también requiere extraer el tipo MIME de la salida, por lo que es algo que involucre el código:

$type = exec("/usr/bin/file -iL " .escapeshellcmd($fn). " 2>/dev/null");
if ($type = trim(strtok(substr(strrchr($type, ":"), 1), ";"))) {
    return $type;
}

Si su pregunta es sobre la fiabilidad: sí, ese es un buen enfoque. Determinar el tipo de archivo de Magic Bytes es bastante confiable en todos los servidores Linux/U*IX actuales.

Si puede usar una extensión PECL (o está utilizando PHP> = 5.3), le recomendaría que use el Información del archivo extensión.

Si no, el mime_content_type () La función funcionará, pero tenga en cuenta que ahora está en desuso (a favor o a FileInfo)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top