【问题标题】:Detect Content-Type Based on FileName基于 FileName 检测 Content-Type
【发布时间】:2014-03-06 19:42:01
【问题描述】:

我正在尝试使用 Apache Tika 来确定内容类型(即 - .pdf 文件的应用程序/pdf)。我想使用 Apache Tika 的 org.apache.tika.detect.NameDetector 类。我的问题是它的检测方法只接受一个输入流。我无权访问文件的 InputStream。我只有文件名(即 - myFile.pdf)。

有没有什么好方法可以使用 Apache Tika 仅根据文件的扩展名/名称来确定内容类型? (注意 - 我想避免创建一个具有所需名称的临时文件来确定它的内容类型。)

谢谢。

【问题讨论】:

  • 试试org.apache.tika.filetypedetector.TikaFileTypeDetector.probeContentType

标签: java apache-tika


【解决方案1】:

您可以使用普通的Apache Tika Detector interface 传入null 作为 InputStream,并提供文件名。

您的代码如下所示:

TikaConfig config = new TikaConfig();

Metadata metadata = new Metadata();
metadata.set(Metadata.RESOURCE_NAME_KEY, filename);
String mimetype = config.getDetector().detect(null, metadata);

为了进一步简化事情,如果您使用Tika facade class,您可以这样做:

Tika tika = new Tika();

String mimetype = tika.detect(filename);

然后你就会回来the mimetype guessed from the filename only

有关详细信息,请参阅 Apache Tika 网站上的 "Ways of triggering Detection" 文档。

【讨论】:

    【解决方案2】:

    我做了一些搜索,发现了一个blog post,其中包含一个使用 org.apache.tika.Tika 类的检测方法确定类型的代码示例。

    所以我可以这样写:

    org.apache.tika.Tika tika = new org.apache.tika.Tika();
    String mimeType = tika.detect("abc.pdf"); // replace abc.pdf with a string variable
    

    【讨论】:

      猜你喜欢
      • 2016-04-25
      • 1970-01-01
      • 2012-02-26
      • 2011-06-18
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      相关资源
      最近更新 更多