2016-12-22 6 views
0

以前は、カスタム設定やメタデータを設定せずにtika.parseToString()を呼び出すことで、Tikaであらゆる種類のファイルの解析に成功しました。今では、mime-typeに基づいて解析するファイルをフィルタリングする必要があります。Tikaはmime-typeを検出しても解析できません

私はtika.detect(new BufferedInputStream(inputStream), new Metadata());でMIMEタイプを見つけることができますが、その後tika.parseToString()を呼び出すと、tikaはEmptyParserを使用し、検出されたコンテンツタイプは "application/octet-stream"です。これはデフォルトであり、tikaがどのタイプのファイルであるかを見つけることができません。ファイルを解析する前にメタデータのコンテンツタイプを設定しようとしましたが、これはorg.apache.tika.exception.TikaException: TIKA-198: Illegal IOExceptionにつながります。私が読んだことは、このファイルが不正な形式であることを意味しますが、同じファイルが事前にmime-typeのチェックなしで正常に解析されます。

パーサーがファイルを解析できないように、detect()がInputStreamで何かをしますか?

私は私の問題を直接解析メソッドにInputStreamを渡すことによって引き起こされたバージョン1.13

答えて

1

、MIMEタイプと解析をチェック両方に同じティカ・インスタンスを使用しています。 detect()は渡されたストリームをマークしてリセットしますが、InputStreamはサポートしません。 InputStreamをTikaInputStreamにラップすると(TikaInputStream stream = TikaInputStream.get(new BufferedInputStream(inputStream));)、この問題が解決されました。

関連する問題