我有一个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
。我该如何解决这个问题?
提前谢谢!
答案 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的更多详情。