代码之家  ›  专栏  ›  技术社区  ›  Dupinder Singh

为什么Apache Tika将jar文件的mimetype检测为application/zip而不是application/java存档?

  •  0
  • Dupinder Singh  · 技术社区  · 5 年前

    我正在尝试检测jar文件的mime类型。代码工作正常,但问题是 Apache Tika 退货 application/zip 而不是 application/java-archive 对于java Jar 文件

    我从html上传了Jar文件

    for (FileItem item : fileItems)
            {  
                String mimeType;
                try { 
                    mimeType = tika.detect(item.getInputStream());
                    System.out.println(mimeType); // returns application/zip
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
    

    所以我的问题是如何为jar文件获取application/java归档mime类型。

    有没有办法配置Apache Tika,或者我做错了什么

    0 回复  |  直到 5 年前
        1
  •  0
  •   Dupinder Singh    5 年前

    感谢@Gagravarr,我能够解决这个问题

    那么我的代码是什么样子的

    public static TikaConfig getTikaConfig() {
            TikaConfig tikaConfig = null;
            try {
                return new TikaConfig();
            } catch (TikaException | IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return tikaConfig;
        }
    public static final TikaConfig tikaConfig = getTikaConfig();
    MediaType mediaType = tikaConfig.getDetector()
                                            .detect(TikaInputStream
                                                        .get(item.getInputStream()), new Metadata());
                    MimeType mimeType = tikaConfig.getMimeRepository().forName(mediaType.toString());
                    String extension =  mimeType.getExtension().split("\\.")[1];
    System.out.println("File extention is :"+extension);
    

    最重要的gralde配置

    compile group: 'org.apache.tika', name: 'tika-core', version: '1.24.1'
    runtime group: 'org.apache.tika', name: 'tika-parsers' version: '1.24.1'