使用tika检索错误的mimetype(application/x-tika-ooxml)



对于docx文件,我检索application/x-tika-ooxml,但我应该检索application/vnd.openxmlformats-officedocument.wordprocessingml.document而不是

这是我的方法:

public String retrieveMimeType(InputStream stream) throws IOException, TikaException {
TikaInputStream tikaStream = null;
TikaConfig tikaConfig = new TikaConfig();
MediaType mediaType = null;
try {
mediaType = tikaConfig.getDetector().detect(TikaInputStream.get(stream), new Metadata());
} catch (Throwable t) {
throw t;
} finally {
if (tikaStream != null) {
try {
tikaStream.close(); 
} catch (IOException e) {
}
}
}
return mediaType.toString();
}

我的依赖:

<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>1.27</version>
</dependency>

我使用tika核心和tika解析器来检索正确的mimetype,但它仍然给我坏的mimettype。。。

更新您的tika模块。tika-core的版本及其模块应始终相同。

<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers-standard-package</artifactId>
<version>2.1.0</version>
</dependency>

新的microsoft文档格式(docxxlsx…(只是来自外部的zip归档。较旧的tika版本默认情况下不会查看它们,这就是为什么根据版本的不同,它们会将它们检测为application/zipapplication/x-tika-ooxml。你可以在这里阅读更多关于这方面的信息。

但是,分析存档可能会导致性能下降。为了防止这种情况,您可以根据您的用例,按名称确定mime类型(见下文(或使用现有的mime类型,如Content-type标头。

final Metadata metadata = new Metadata();
metadata.add(TikaCoreProperties.RESOURCE_NAME_KEY, fileName);
detector.detect(stream, metadata);

在HTTP请求中,文件名也可能在Content-Disposition标头中。

对我来说,我会使用这些旧的tika版本,不知道为什么,但这能够得到我们想要的结果。

<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>1.23</version>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>1.23</version>
</dependency>

最新更新