28 Nov 2012

Java: guess content type of byte array

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);

« Return