从DataHandler中检测MIME类型

时间:2016-08-24 08:32:30

标签: java web-services mime-types apache-tika datahandler

我有一个SOAP-WebService,提供一种方法,让调用者能够上传PDF,JPG,PNG或BMP文件。 为了正确处理,我需要从DataHandler中获取MIME类型。 我试图用Apache Tika获取MIME类型:

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

现在我的问题:

大多数时候,Tika会检测到正确的MIME类型,但在少数情况下上传JPG时,它会检测到plain/text而不是image/jpeg。我该如何解决这个问题?

提前谢谢!

1 个答案:

答案 0 :(得分: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);

有关课程MimeUtil here的更多详情。