从 DataHandler 检测 MIME 类型
Detecting MIME-Type from 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
。我该如何解决?
提前致谢!
我不知道 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);
有关 class MimeUtil
here 的更多详细信息。
我有一个 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
。我该如何解决?
提前致谢!
我不知道 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);
有关 class MimeUtil
here 的更多详细信息。