我今天偶然发现了这一点:
String fileName = "test.JPG";
servletContext.getMimeType(fileName); // null
明显的修复:
servletContext.getMimeType(fileName.toLowerCase()); // image/jpeg
在检测 MIME 类型时,我不关心文件扩展名字母大小写是否正确?
最佳答案
您已经在问题中提供了示例,让我解释一下为什么会发生这种情况。
如果您使用Tomcat,则在检测mimeType时需要关心大小写。
为什么?
Tomcat 将 mimeType 存储在名为 mimeMappings 的 HashMap 中。
HashMap 的键区分大小写。
以下代码块取自org.apache.catalina.core.StandardContext
private HashMap<String, String> mimeMappings =
434 new HashMap<String, String>();
您知道 java.util.HashMap 中的键区分大小写。这意味着您可以将“abc”和“ABC”同时保留为同一个映射中的键。
请参阅此示例。
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}
信息:这就是 map 不区分大小写的原因 exists在Apache Commons中。
关于java - 文件扩展名字母大小写对于 MIME 类型重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38489027/