String fileName = "test.JPG";
servletContext.getMimeType(fileName); // null
明显的修复:
servletContext.getMimeType(fileName.toLowerCase()); // image/jpeg
在检测MIME类型时,我是否对文件扩展字母大小写不感兴趣?
答案 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。