我正在尝试使用Apache Tika来确定内容类型(即--pdf文件的application / pdf)。我想使用Apache Tika的org.apache.tika.detect.NameDetector类。我的问题是它的detect方法只接受一个InputStream。我无权访问File的InputStream。我只有文件名(即 - myFile.pdf)。
有没有什么好方法可以使用Apache Tika根据文件的扩展名/名称来确定内容类型? (注意 - 我想避免创建一个具有所需名称的临时文件来确定它的内容类型。)
感谢。
答案 0 :(得分:4)
您可以使用传入null
的普通Apache Tika Detector interface作为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"文档。
答案 1 :(得分: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