【问题标题】:Mime Type detection of Office files is resulting in application/x-tika-ooxmlOffice 文件的 Mime 类型检测导致 application/x-tika-ooxml
【发布时间】:2021-09-28 18:15:52
【问题描述】:

我正在尝试检测文件输入流的 mime 类型。

我的类路径中只有 tika 核心。我使用的是 2.0.0 版本。

但是,对于 docx 文件,“application/x-tika-ooxml”始终会被检测到。 Office文件检测总是导致x-tika-ooxml。

我也尝试将输入流包装在 TikaInputStream 中,但结果相同。

下面是我的代码

public class TikaTester {
        
        public static void main (String a[]) {
            
            try {
                FileInputStream stream = new FileInputStream("/Users/<>/Downloads/Test DMS.docx");
                detectMimeType(stream);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
        
        public static void detectMimeType(InputStream stream) {
            Tika tika = new Tika();
            try {
                String mimeType = tika.detect(stream);
                System.out.println("Mime type detected " + mimeType);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    }

【问题讨论】:

    标签: apache-tika


    【解决方案1】:

    如果我在类路径中添加 tika-parsers 并且需要使用 TikaInputStream,则此方法有效。

    可能是 tika core 没有 office 文件的解析器。

    【讨论】:

    • 完全正确。您的类路径上需要 tika-parsers,以便 Apache POI 可以打开文件并识别它是 ooxml 的哪个子类型。
    • @TimAllison 感谢您的回复...还有一个问题需要我确认...在默认的 Tika 配置内容检测中总是先通过魔术字节然后通过资源名称?
    • Y,如果资源名称/文件扩展名不提供按字节检测的文件类型的特化,Tika 会退回到按字节检测。例如,如果 Tika 通过字节检测到一个 .zip 文件,但文件名以 .txt 结尾,它会报告 .zip。但是,如果文件名以 .kmz 结尾,它应该返回 kmz,因为 kmz 是 application/zip 的特化。
    • 我也面临与办公文件相同的问题,例如内容类型始终为“apache/x-tika-ooxml”而不是“application/vnd.openxmlformats-officedocument.spreadsheetml”的电子表格.sheet”,因为要确定内容类型的数据总是作为流获得,没有关于扩展名的信息,我们无法形成具有文件名和扩展名属性“RESOURCE_NAME_KEY”的元数据对象。我正在使用 tika-core 和 tika-parsers-standard-package 两个 2.1.0 版本。你能提出一些解决方案吗?
    猜你喜欢
    • 2022-01-06
    • 2018-12-11
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    相关资源
    最近更新 更多