2016-08-24 7 views
1

У меня есть SOAP-WebService, предоставляющий метод, при котором вызывающий может загрузить файл PDF, JPG, PNG или BMP. Для правильной обработки мне нужно получить MIME-тип из DataHandler. Я пытался получить MIME-тип с Apache Тика:Обнаружение MIME-типа из DataHandler

Tika tika = new Tika(); 
InputStream stream = dataHandler.getInputStream(); 
String mimeType = tika.detect(stream); 

Теперь моя проблема:

В большинстве случаев Тика определяет правильные MIME-типов, но в некоторых случаях загружаемых JPGs он обнаруживает plain/text вместо image/jpeg. Как я могу это решить?

Спасибо заранее!

+0

Какую версию Apapche Tika вы используете? Что произойдет, если вы обновите? О, и у вас есть имя файла? Тика может догадаться, когда дано имя файла тоже – Gagravarr

+0

У меня есть текущая версия 1.13. К сожалению, у меня нет имени файла, это одна из причин, по которым мне нужен MIME-тип ;-) – VenoxX

+0

Допустимые файлы jpeg не должны распознаваться как текст. Предполагая, что вы получаете ту же самую проблему в недавней ночной сборке, можете ли вы открыть новую ошибку Tika и загрузить файл, который показывает проблему? – Gagravarr

ответ

1

Я не знаю, что случилось с Tika, но в качестве альтернативы вы можете попробовать MimeUtil, который делает почти то же самое и делает это с большей гибкостью, так как вы можете легко его настроить.

// Define the mime type detector to use, here it will be MagicMimeMimeDetector 
// As you intend to detect from a Stream 
// To be done only once in a static block of your class for example  
MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector"); 
... 
// Get the collection of matching mime types 
Collection<?> mimeTypes = MimeUtil.getMimeTypes(stream); 

Более подробная информация о классе MimeUtilhere.

+0

Спасибо, я попробовал это с MimeUtil, и это сработало очень хорошо. – VenoxX