Zah*_*idi 2 java pom.xml apache-tika
对于 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();
}
Run Code Online (Sandbox Code Playgroud)
还有我的依赖:
<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>
Run Code Online (Sandbox Code Playgroud)
我使用 tika-core 和 tika-parsers 来检索正确的 mimetype,但它仍然给我错误的 mimetype...
小智 6
更新您的 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>
Run Code Online (Sandbox Code Playgroud)
新的微软文档格式(docx、xlsx、 ...)只是zip来自外部的档案。较旧的 tika 版本默认情况下不会研究它们,这就是为什么根据版本,它们会将它们检测为application/zip或application/x-tika-ooxml。您可以在此处阅读有关此内容的更多信息。
然而,分析档案可能会导致性能下降。为了防止这种情况,您可以根据您的用例,按名称确定 mime 类型(见下文)或使用现有的 mime 类型,例如Content-Type header。
final Metadata metadata = new Metadata();
metadata.add(TikaCoreProperties.RESOURCE_NAME_KEY, fileName);
detector.detect(stream, metadata);
Run Code Online (Sandbox Code Playgroud)
在 HTTP 请求中,文件名也可能位于Content-Disposition 标头中。
| 归档时间: |
|
| 查看次数: |
5930 次 |
| 最近记录: |