Saltar al contenido

Obtener el tipo Mime de un archivo en Java

Solución:

En Java 7 ahora puede usar Files.probeContentType(path).

Desafortunadamente,

mimeType = file.toURL().openConnection().getContentType();

no funciona, ya que este uso de URL deja un archivo bloqueado, por lo que, por ejemplo, no se puede eliminar.

Sin embargo, tienes esto:

mimeType= URLConnection.guessContentTypeFromName(file.getName());

y también lo siguiente, que tiene la ventaja de ir más allá del mero uso de la extensión de archivo y echar un vistazo al contenido

InputStream is = new BufferedInputStream(new FileInputStream(file));
mimeType = URLConnection.guessContentTypeFromStream(is);
 //...close stream

Sin embargo, como sugiere el comentario anterior, la tabla incorporada de tipos de mime es bastante limitada y no incluye, por ejemplo, MSWord y PDF. Entonces, si desea generalizar, deberá ir más allá de las bibliotecas integradas, utilizando, por ejemplo, Mime-Util (que es una gran biblioteca, que usa tanto la extensión de archivo como el contenido).

Con Apache Tika solo necesitas tres líneas de código:

File file = new File("/path/to/file");
Tika tika = new Tika();
System.out.println(tika.detect(file));

Si tiene una consola maravillosa, simplemente pegue y ejecute este código para jugar con ella:

@Grab('org.apache.tika:tika-core:1.14')
import org.apache.tika.Tika;

def tika = new Tika()
def file = new File("/path/to/file")
println tika.detect(file)

Tenga en cuenta que sus API son ricas, puede analizar “cualquier cosa”. A partir de tika-core 1.14, tiene:

String  detect(byte[] prefix)
String  detect(byte[] prefix, String name)
String  detect(File file)
String  detect(InputStream stream)
String  detect(InputStream stream, Metadata metadata)
String  detect(InputStream stream, String name)
String  detect(Path path)
String  detect(String name)
String  detect(URL url)

Consulte las apidocs para obtener más información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *