当前位置: 首页 > 知识库问答 >
问题:

检测到MIME类型后,Tika无法解析

弘焕
2023-03-14

我之前通过调用Tika.parsetostring()成功地用Tika解析了所有类型的文件,而没有设置任何自定义配置或元数据。现在我需要根据MIME-Type过滤文件进行解析。

我可以用tika.detect(new BufferedInputStream(inputStream),new Metadata());找到mime-type,但是在调用tika.parsetostring()之后,tika使用EmptyParser,检测到的内容类型是“application/octet-stream”。这是默认值,意味着tika无法找到它是什么类型的文件。我试图在解析文件之前设置元数据中的内容类型,但这导致org.apache.tika.exception.tikaException:tika-198:非法IOException。根据我所读到的内容,这意味着文件格式错误,但是相同的文件可以在没有预先检查mime-type的情况下成功解析。

detect()是否对InputStream做了一些事情,使解析器无法解析文件?

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

共有1个答案

萧晔
2023-03-14

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

 类似资料:
  • 我正在使用Apache Tika从它的base64 rapresentation中检测文件Mime类型。不幸的是,我没有关于该文件的其他信息(例如扩展名)。 我能做些什么让Tika变得更具体吗? 谢了。

  • 我试图检测传递给web服务到SOAP信封中的文件内容类型。可以通过两种方式指示该文件: 从其url, 从其包含(base64压缩数据)。 那么,如何在文件扩展名未知的情况下检测MIME类型呢?

  • 我使用spring JAX-RS将文件作为多部分表单数据上传。我有inputstream对象作为参数。当我将这个输入流复制到磁盘时,我得到了我的文本文件。 但是当我试图检测这个输入流的内容类型时,我得到的内容类型是application/octet-stream。 作为一个测试,我还用tika desktop测试了相同的文件,并获得了正确的内容类型。

  • 我使用Apache Tika来提取所有类型文件的文本。现在我还想用它来检测文件的正确MIME类型。 例如,这适用于... null ...但不是为了: CSS-文件(而不是) JavaScript-文件(而不是) ... (这些mime类型的结果来自我的应用程序,也来自tika-app)。 我的应用程序需要像这样的精确MIME类型,而不是一般的。提卡可能这样吗?

  • 我一直试图仅使用文件内容检测MIME类型,使用Apache Tika Core和Apache Tika Parser1.23 jars。下面是用于相同内容的代码: Tika无法检测扩展名为。tmp(text/plain file)和iso-8859-1字符集的文件的内容类型,内容如下: èé 通过以下方式正确检测具有相同配置和以下内容的文件: 000000000000000000000000000

  • 这是我用于读取mime类型的类。我正在尝试添加一个新的mime类型(属性文件)并读取它。 这是我的类文件: 从这些文档中,我创建了一个自定义xml: 现在我如何添加到我的程序并阅读它。我必须创建一个解析器吗?我被困在这里了。