2016-08-24 17 views
1

私は、呼び出し元がPDF、JPG、PNGまたはBMPファイルをアップロードできるメソッドを提供するSOAP-WebServiceを提供しています。 正しい処理のために、私はDataHandlerからMIME-Typeを取得する必要があります。 は、私は、ApacheティカでMIMEタイプを取得しようとしました:DataHandlerからMIME-typeを検出する

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

今私の問題:ティカは正しいMIMEタイプを検出したが、アップロードJPGのみのいくつかのケースでは、それはplain/textの代わりを検出

ほとんどの時間をimage/jpeg。これをどうすれば解決できますか?

ありがとうございます!

+0

どのバージョンのApapche Tikaをお使いですか?アップグレードするとどうなりますか?ああ、ファイル名は手に入れましたか?ファイル名が与えられたときにTikaがよりよく推測できる – Gagravarr

+0

私は現在のバージョン1.13を持っています。残念ながら私はファイル名がありません。理由はMIME-Typeが必要な理由の1つです;-) – VenoxX

+0

有効なjpegファイルはテキストとして検出されるべきではありません。最近の夜間ビルドで同じ問題が発生したとすると、新しいTikaバグを開いて問題を示すファイルをアップロードできますか? – Gagravarr

答えて

1

私はTikaに何が間違っているのか分かりませんが、代わりにあなたは簡単に設定できるように、より多くの柔軟性を持って、よく同じことをするMimeUtilを試すことができます。クラスMimeUtilhereについて

// 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); 

詳細。

+0

ありがとう、MimeUtilで試してみたところ、本当にうまくいった。 – VenoxX

関連する問題