Written by ilgrosso
Maybe it is a not a common usecase, but I've just had need to know the content type of a bare byte[].
After been searching the whole Internet and evaluated dozens of utility libraries I finally ended up with a couple of very simple but effective solutions.
First solution, 100% JDK-only, based on URLConnection.
byte[] value = ...; String contentType = null; try { contentType = URLConnection.guessContentTypeFromStream( new ByteArrayInputStream(value)); } catch (IOException e) { LOG.error("Could not guess content type", e); }
Second solution, suggested by Jukka Zitting, based on Apache Tika with a very small footprint (~450 KB)
byte[] value = ...; String contentType = new Tika().detect(value);