2010-08-26 26 views
19

Curioso cuál es la mejor manera en Java para obtener el tipo mime de un archivo. En realidad, debería inspeccionar el archivo porque los nombres de archivo no son un indicador preciso.¿La mejor manera de determinar el tipo de mime de un archivo en java?

Actualmente estoy usando lo siguiente, que parece ser muy impredecible

is = new BufferedInputStream(new FileInputStream(fileName)); 
    String mimeType = URLConnection.guessContentTypeFromStream(is); 
    if(mimeType == null) { 
    throw new IOException("can't get mime type of image"); 
    } 
+0

todavía creen tu camino es genial para la mayoría de los casos. –

+0

Utilicé la clase que se publicó como respuesta aquí: http://stackoverflow.com/a/10140531/293280 –

Respuesta

23

El URLConnection#guessContentTypeFromStream() o ...FromName() es de hecho la mejor lo que se puede obtener en la API estándar de Java SE. Sin embargo, existen bibliotecas de terceros como jMimeMagic que hace su trabajo mejor que los métodos URLConnection#guessXXX().

String mimeType = Magic.getMagicMatch(file, false).getMimeType(); 

Esto admite una gama más amplia de tipos de mime.

+0

gracias! lo probaré – James

+0

De nada. – BalusC

+0

@BalusC ¿Qué puede decir acerca de esta pregunta AS [verifica el archivo de tipo MIME con JMimeMagic] (http://stackoverflow.com/questions/15325047/check-file-of-mime-type-with-jmimemagic)? –

0
public static String getContentType(String filename) 
    { 
     String g = URLConnection.guessContentTypeFromName(filename); 
     if(g == null) 
     { 
      g = MimetypesFileTypeMap.getDefaultFileTypeMap().getContentType(filename); 
     } 
     return g; 
    } 
Cuestiones relacionadas