java - 文件扩展名字母大小写对于 MIME 类型重要吗?

标签 java servlets

我今天偶然发现了这一点:

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 不区分大小写的原因 existsApache Commons中。

关于java - 文件扩展名字母大小写对于 MIME 类型重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38489027/

相关文章:

java - 在jsp Servlet中使用hibernate在mysql中插入图像

java - 如何使用Jquery 从servlet 获取返回的数据?

java - 在Java中运行 "rhc alias"

java - Android 上的 HTTP 基本授权网络问题

java - 音频在Eclipse中有效,但在.jar中不起作用

flash - 如何在 Servlet 端检索由 Flash 4 HttpService 发送的数据

java - 在 JSP 中将值从 servlet 传递到 Textbox

java - 如何在 spring mvc 中数据绑定(bind)列出选定的复选框

java - 使用 jquery 和 thymeleaf 动态显示图像

java - 获取错误 "Cannot access org.eclipse.jetty.util.component.ContainerLifeCycle"