gpt4 book ai didi

java - Tika 在检测到 mime-type 后无法解析

转载 作者:行者123 更新时间:2023-12-01 09:06:00 25 4
gpt4 key购买 nike

我之前已经通过调用tika.parseToString()成功地用Tika解析了各种文件。无需设置任何自定义配置或元数据。现在我需要根据 mime 类型过滤要解析的文件。

我可以通过 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 类型即可成功解析。

Detect() 是否对 InputStream 执行某些操作,导致解析器无法解析文件?

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

最佳答案

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

关于java - Tika 在检测到 mime-type 后无法解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41282491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com