使用Sling MimeTypeService时覆盖默认的mime-type

时间:2014-05-20 17:06:52

标签: mime-types sling

我正在使用Sling MimeTypeService以获得给定文件的适当扩展名&尝试使用我自己的扩展名覆盖默认扩展名。

E.g。如果我有方法:

@Reference
MimeTypeService mimeTypeService;

public void getPlainTextAsDiff() {
    mimeTypeService.registerMimeType("text/plain", ".diff");
    mimeTypeService.getExtension("text/plain"); //returns ".txt"        
}

这将返回“.txt”而不是“.diff”,忽略方法的第一行。 这似乎与文档一致:

  

MIME类型可以映射到多个扩展名(例如text / plain to   txt,log,...)。预计此方法将返回其中一个   扩展。 由实施来选择合适的   如果单个MIME类型存在多个映射,则为扩展名。

     

[我的重点]

我想知道是否有可能以某种方式规避这种情况,例如:取消注册mime-type或对可用的那些进行排名,以便在上面的情况下“diff”会保证返回?

1 个答案:

答案 0 :(得分:1)

您可以通过提供MimeTypeProvider服务来扩展mime类型映射,但查看MimeTypeServiceImpl代码,看起来它们不按服务排名排序。如果我没有问题,您将无法确定MimeTypeProviders的优先顺序。您可能希望尝试此操作并提交增强请求或修补程序。