如何添加自定义 MIME 类型并覆盖默认的扩展名模式?

40

我正在尝试将自定义MIME类型添加到Apache Tika。

我在org.apache.tika.mime中有以下custom-mimetypes.xml文档:

<?xml version="1.0" encoding="UTF-8"?>
<mime-info>
    <mime-type type="text/stringtemplategroup">
        <glob pattern="*.stg"/>
    </mime-type>
    <mime-type type="text/stringtemplate">
        <glob pattern="*.st"/>
    </mime-type>
</mime-info>

我遇到了一个关于“冲突扩展模式 .st”的错误:
Caused by: org.apache.tika.mime.MimeTypeException: Conflicting extension pattern: .st
    at org.apache.tika.mime.MimeTypesReader.startElement(MimeTypesReader.java:166)
    at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)

如何覆盖默认的 *.st 扩展名,并使用自己的扩展名?

你修好了吗?我也遇到了同样的问题。如果你解决了,请告诉我。 - kittu
3
因为一些相当糟糕的设计决策,TIka把所有东西都紧密地耦合到一个File对象,而不是一个InputStream中,所以在Google App Engine上使用非常困难,我不得不分叉并修改太多的东西才能使它更加容易。最终,我自己编写了一个魔数分类器来支持我应用程序中少数几种类型。Tika是一个好想法,但实现很糟糕。 - user177800
好的,那我就没有运气了。 - kittu
8
看到这篇文章真是遗憾,因为我的开发团队的成员曾经分叉了tika并对其进行了大量修改,以实现更多的流模式操作而不是仅限于文件。然而,可悲的是,由于他们所在公司的担忧,他们没有被允许将这些修改推回项目中,而这已经是三年前或更久的事情了! - default_avatar
1个回答

4

看起来你需要添加一个具有优先级的magic标签,

请点击此处
<mime-type type="text/stringtemplate">
    <magic priority="50">
        <!-- some match pattern -->
        <!-- <match value="[some characters]" type="string" offset="0" /> -->
    </magic>
    <glob pattern="*.st"/>
</mime-type>

谢谢提供信息,但最终即使这样做也无法解决与“文件”紧密耦合的问题。 - user177800
1
谢谢你的赏金,非常感激。 - LMC
1
感谢您抽出时间并尝试帮助那些可能会发现这个链接(https://xkcd.com/979/)有用的人们。 - user177800
1
有趣的是,当SO更改其UI时,我错误地进入了这个问题。直到我发布了我的答案,我才意识到它是一个旧问题。几年前,我在Linux服务器上添加了自定义魔术数字用于Quark Xpress文件,该服务器充当苹果文件服务器,这引起了我的注意:p - LMC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接