Любопытно, что лучший способ в Java получить mime-тип файла. Он должен фактически проверять файл, потому что имена файлов не являются точным индикатором.
В настоящее время я использую следующее, которое кажется очень пораженным или пропущенным
is = new BufferedInputStream(new FileInputStream(fileName));
String mimeType = URLConnection.guessContentTypeFromStream(is);
if(mimeType == null) {
throw new IOException("can't get mime type of image");
}