我有以下测试代码来检测docx内容类型:
@Test
public void testContentTypeOfaWordDOCXFileIsReturnedCorrectlyByTheServer() throws IOException, TikaException {
File docxFile = new File(FILE_COMPLETE_PATH);
InputStream inputStream = new FileInputStream(docxFile);
MediaType mediaType=spyServlet.getServerInducedType(inputStream);
assertEquals(DOCX_TYPE, mediaType);
}
而GetServerIntradedType的实现方式如下:
protected MediaType getServerInducedType(InputStream inputStream) throws IOException, TikaException {
try (BufferedInputStream buffStream = new BufferedInputStream(inputStream);
TikaInputStream tikaInputStream = TikaInputStream.get(buffStream)
) {
TikaConfig tikaConfig = new TikaConfig();
Detector detector = tikaConfig.getDetector();
Metadata metadata=new Metadata();
MediaType mediaType=detector.detect(tikaInputStream, metadata);
return mediaType;
}
}
问题:当我运行上面的测试时,我希望得到DOCX_TYPE,即“application/x-tika-ooxml”,但我得到的是“application/zip”。为什么?
java.lang.AssertionError: Expected :application/x-tika-ooxml Actual :application/zip <Click to see difference>
我的pom文件具有以下配置:
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>1.9</version>
</dependency>
用7zip打开一个docx,您会看到:
如果程序只分析zip头,它检测到一个标准zip。如果发生这种情况,只需扫描zip头并查找[ContentTypes].xml
。
如果找到它,您可以放心地假设它是一个docx文档。
如何使用apache tika来检测文件是否是MP3?我不只是寻找基于文件扩展名的检测。 这个问题不是重复的。这里有人使用Tika与文件扩展名检测。这对我来说还不够。我需要知道是否文件是mp3或不是基于文件类型,而不是文件名。我在文档中找不到如何做到这一点的任何信息。 TypeDetector总是为所有文件类型返回Application/Octet流,所以我想知道如何使用它来获取信息,如果文件是m
我试图从docx中提取文本:tika-app做得很好,但当我试图在代码中做同样的事情时,结果是什么也没有,tika解析器说我的docx文件的内容类型是“application/zip”。 我该怎么办?我应该使用递归方法(像这样)还是有其他方法? java.lang.noClassDefFounderRor:org/apache/poi/openXML4j/exceptions/invalidFor
我使用spring JAX-RS将文件作为多部分表单数据上传。我有inputstream对象作为参数。当我将这个输入流复制到磁盘时,我得到了我的文本文件。 但是当我试图检测这个输入流的内容类型时,我得到的内容类型是application/octet-stream。 作为一个测试,我还用tika desktop测试了相同的文件,并获得了正确的内容类型。
我之前通过调用成功地用Tika解析了所有类型的文件,而没有设置任何自定义配置或元数据。现在我需要根据MIME-Type过滤文件进行解析。 我可以用找到mime-type,但是在调用之后,tika使用EmptyParser,检测到的内容类型是“application/octet-stream”。这是默认值,意味着tika无法找到它是什么类型的文件。我试图在解析文件之前设置元数据中的内容类型,但这导致
我一直试图仅使用文件内容检测MIME类型,使用Apache Tika Core和Apache Tika Parser1.23 jars。下面是用于相同内容的代码: Tika无法检测扩展名为。tmp(text/plain file)和iso-8859-1字符集的文件的内容类型,内容如下: èé 通过以下方式正确检测具有相同配置和以下内容的文件: 000000000000000000000000000
使用我想检测的tika。属性文件为属性文件(文本/属性)基于属性文件中的键和值格式,其他为文本文件(文本/普通) 上面我写了一个自定义类,它实现了tika的Detector接口,还为mime类型创建了一个自定义文件: 将上述自定义类与META-INF/services/org一起添加到jar文件中。阿帕奇。蒂卡。发现探测器文件,但当我运行程序时,它会打印一个文件为文本/普通,但不是文本/属性文件