提卡(Tika):禁止查看zip文件

时间:2018-08-23 12:34:32

标签: java apache-tika

当前,tika正在处理内部的zip文件。

我想禁用此功能,只让我进入application/zip哑剧类型。

我正在使用此代码:

public String getMimeType(InputStream is) {
    TikaConfig tikaConfig = TikaConfig.getDefaultConfig();
    Detector detector = tikaConfig.getDetector(); //new DefaultDetector();
    Metadata metadata = new Metadata();
    MediaType mediaType = detector.detect(TikaInputStream.get(is), metadata);
}

此代码返回压缩的mime类型文件。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

根据您的示例,我编写了一个虚拟应用程序。然后,我使用了一个没有zip扩展名的大型Zip文件。我看不到Tika解析整个文件的行为。

我看着调试器。 Tika仅读取65536字节来确定文件类型。

请参阅:Tika MimeTypes.class:154

public MediaType detect(InputStream input, Metadata metadata)             throws IOException {
    List<MimeType> possibleTypes = null;

    // Get type based on magic prefix
    if (input != null) {
        input.mark(getMinLength());
        try {
            byte[] prefix = readMagicHeader(input);
            possibleTypes = getMimeType(prefix);
        } finally {
            input.reset();
        }
    }

虚拟应用

import org.apache.tika.config.TikaConfig;
import org.apache.tika.detect.Detector;
import org.apache.tika.io.TikaInputStream;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.mime.MediaType;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class Main {

  public static void main(String[] args) throws IOException {
    System.out.println(new Main().getMimeType(new FileInputStream(new File("C:\\temp\\apache-tomcat-8.0.47-windows-x64"))));
  }

  public String getMimeType(InputStream is) throws IOException {
    final TikaConfig tikaConfig = TikaConfig.getDefaultConfig();

    Detector detector = tikaConfig.getDetector(); //new DefaultDetector();
    Metadata metadata = new Metadata();
    MediaType mediaType = detector.detect(TikaInputStream.get(is), metadata);
    return mediaType.getType();
  }

行家:

  <dependencies>
    <dependency>
      <groupId>org.apache.tika</groupId>
      <artifactId>tika-core</artifactId>
      <version>1.18</version>
    </dependency>
  </dependencies>

您能告诉我一个读取并解析整个zip文件的示例吗?我可以理解,如果文件超过一定大小,那将是一个问题。

不幸的是,如果我无法重现问题,我无法为您提供帮助。