2017-06-29 58 views
0

我试图获取有效的“audio/wav”mime类型的文件扩展名。getExtension for mimetype“audio/wav”使用apache返回空字符串tika

使用此代码

MimeTypes mimeTypes = TikaConfig.getDefaultConfig().getMimeRepository(); 
    String extension = mimeTypes.getDefaultMimeTypes().forName("audio/wav").getExtension(); 

扩展我得到的是空字符串。

但是,使用“audio/x -wav”扩展工作。

这是预期的行为?

回答

0

TL; DR
是的,这是预期的行为。


x- MIME子类型通常是针对尚未标准化格式。对应于WAV格式的MIME类型是audio/vnd.wave,audio/wav,audio/wave,audio/x-wav(参见here)。一些浏览器接受更多或更少的MIME类型。 Apache服务器通常发送WAV为x-wav,尽管我不知道为什么。

官方的MIME类型现在是audio/vnd.wave,所以你可以试试看看它是否有效。

来源:here

+0

与'vnd.wave'相同的行为不幸。我必须在这里深入一点,我想......非常感谢! – guyman

+0

在这种情况下,只需使用'x-wav'。再次,Apache通常使用'x-wav' – filaton

0

这是在旧版本的Tika的错误。

您需要使用较新版本的Apache Tika才能获得正确的行为。 (1.15.1或1.16应该这样做)。如从tika-parsers/src/test/java/org/apache/tika/mime/TestMimeTypes.java单元测试采取:

assertType("audio/vnd.wave", "testWAV.wav"); 

(即单元测试验证官方mime类型被检测到,其他别名等audio/wav一般会被透明地映射到典型一个的那一个)

或者,如果你被困在一个旧的Tika版本中,你应该基本上可以换掉tika-mimetypes.xml file for the latest version,但是如果你在一个更旧版本的Tika中交换它,最好重新运行单元测试以确保你避难在这个过程中不会破坏任何东西!

+0

谢谢!虽然我似乎无法在任何有关'tika-core'的maven回购中找到高于1.15的版本。有任何想法吗? – guyman

+0

等几天,下一个版本的发布过程(包括那个bug修复)刚刚开始! – Gagravarr