2016-08-24 191 views
1

我有一個SOAP-WebService提供了一個方法,調用者可以上傳PDF,JPG,PNG或BMP文件。 對於正確的處理,我需要從DataHandler中獲取MIME類型。 我試圖讓MIME類型與Apache提卡:從DataHandler檢測MIME類型

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

現在我的問題:

大多數時候蒂卡檢測正確的MIME類型,但在上傳JPG格式的少數情況下檢測,而不是plain/textimage/jpeg。我該如何解決這個問題?

預先感謝您!

+0

你使用的是什麼版本的Apapche Tika?如果升級會發生什麼?哦,你有文件名嗎?提供文件名時,Tika可以猜得更好 – Gagravarr

+0

我擁有當前版本1.13。不幸的是,我沒有任何文件名,這就是爲什麼我需要一個MIME類型的原因之一;-) – VenoxX

+0

有效的jpeg文件不應該被檢測爲文本。假設你在最近的每晚構建中遇到同樣的問題,你能否打開一個新的Tika bug並上傳一個顯示問題的文件? – 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