文件扩展名字母大小写对于MIME类型是否重要?

时间:2016-07-20 19:15:36

标签: java servlets

我今天偶然发现了这个:

String fileName = "test.JPG";
servletContext.getMimeType(fileName);  // null

明显的修复:

servletContext.getMimeType(fileName.toLowerCase());  // image/jpeg    

在检测MIME类型时,我是否对文件扩展字母大小写不感兴趣?

1 个答案:

答案 0 :(得分:1)

您已经在问题中提供了示例,让我解释一下为什么会发生这种情况。

如果您使用 Tomcat ,则在检测到mimeType时需要打扰

为什么?

Tomcat将mimeTypes存储在名为mimeMappings的 HashMap 中。

HashMap的键区分大小写。

以下代码块取自org.apache.catalina.core.StandardContext

 private HashMap<String, String> mimeMappings =
434         new HashMap<String, String>();

您知道java.util.HashMap中的键区分大小写。这意味着你可以同时保持&#34; abc&#34;和&#34; ABC&#34;作为同一地图中的键。

请参阅此示例。

public static void main(String[] args) {

  Map<String, String> map = new HashMap<String, String>();
  map.put("abc", "abc");
  map.put("xyz", "xyz");
  map.put("ABC", "ABC");

  System.out.println(map);
}
Output
{ABC=ABC, abc=abc, xyz=xyz}

信息:这就是为什么 Apache Commons 中的案例不敏感地图exists