【问题标题】:Tika unable to parse after detecting mime-typeTika 在检测到 mime 类型后无法解析
【发布时间】:2016-12-22 11:47:37
【问题描述】:

我之前通过调用tika.parseToString() 成功地用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 进行处理,导致解析器无法解析文件?

我使用相同的 tika-instance 来检查 mime 类型和解析,版本 1.13

【问题讨论】:

    标签: java apache-tika text-extraction


    【解决方案1】:

    我的问题是由直接将 InputStream 传递给 parse 方法引起的。 detect() 标记并重置通过的流,InputStream 不支持。将 InputStream 包装成 TikaInputStream(TikaInputStream stream = TikaInputStream.get(new BufferedInputStream(inputStream));) 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2018-04-08
      • 1970-01-01
      • 2022-01-06
      • 2021-09-28
      • 2016-01-20
      • 2010-10-13
      • 2019-05-31
      • 2014-08-12
      • 2013-05-31
      相关资源
      最近更新 更多