001package io.jboot.components.http; 002 003import java.util.HashMap; 004import java.util.Map; 005 006public class HttpMimeTypes { 007 008 private static final Map<String, String> defaultMappings = new HashMap<>(200); 009 010 static { 011 defaultMappings.put("txt", "text/plain"); 012 defaultMappings.put("css", "text/css"); 013 defaultMappings.put("html", "text/html"); 014 defaultMappings.put("htm", "text/html"); 015 defaultMappings.put("gif", "image/gif"); 016 defaultMappings.put("jpg", "image/jpeg"); 017 defaultMappings.put("jpe", "image/jpeg"); 018 defaultMappings.put("jpeg", "image/jpeg"); 019 defaultMappings.put("bmp", "image/bmp"); 020 defaultMappings.put("js", "application/javascript"); 021 defaultMappings.put("png", "image/png"); 022 defaultMappings.put("java", "text/plain"); 023 defaultMappings.put("body", "text/html"); 024 defaultMappings.put("rtx", "text/richtext"); 025 defaultMappings.put("tsv", "text/tab-separated-values"); 026 defaultMappings.put("etx", "text/x-setext"); 027 defaultMappings.put("json", "application/json"); 028 defaultMappings.put("class", "application/java"); 029 defaultMappings.put("csh", "application/x-csh"); 030 defaultMappings.put("sh", "application/x-sh"); 031 defaultMappings.put("tcl", "application/x-tcl"); 032 defaultMappings.put("tex", "application/x-tex"); 033 defaultMappings.put("texinfo", "application/x-texinfo"); 034 defaultMappings.put("texi", "application/x-texinfo"); 035 defaultMappings.put("t", "application/x-troff"); 036 defaultMappings.put("tr", "application/x-troff"); 037 defaultMappings.put("roff", "application/x-troff"); 038 defaultMappings.put("man", "application/x-troff-man"); 039 defaultMappings.put("me", "application/x-troff-me"); 040 defaultMappings.put("ms", "application/x-wais-source"); 041 defaultMappings.put("src", "application/x-wais-source"); 042 defaultMappings.put("zip", "application/zip"); 043 defaultMappings.put("bcpio", "application/x-bcpio"); 044 defaultMappings.put("cpio", "application/x-cpio"); 045 defaultMappings.put("gtar", "application/x-gtar"); 046 defaultMappings.put("shar", "application/x-shar"); 047 defaultMappings.put("sv4cpio", "application/x-sv4cpio"); 048 defaultMappings.put("sv4crc", "application/x-sv4crc"); 049 defaultMappings.put("tar", "application/x-tar"); 050 defaultMappings.put("ustar", "application/x-ustar"); 051 defaultMappings.put("dvi", "application/x-dvi"); 052 defaultMappings.put("hdf", "application/x-hdf"); 053 defaultMappings.put("latex", "application/x-latex"); 054 defaultMappings.put("bin", "application/octet-stream"); 055 defaultMappings.put("oda", "application/oda"); 056 defaultMappings.put("pdf", "application/pdf"); 057 defaultMappings.put("ps", "application/postscript"); 058 defaultMappings.put("eps", "application/postscript"); 059 defaultMappings.put("ai", "application/postscript"); 060 defaultMappings.put("rtf", "application/rtf"); 061 defaultMappings.put("nc", "application/x-netcdf"); 062 defaultMappings.put("cdf", "application/x-netcdf"); 063 defaultMappings.put("cer", "application/x-x509-ca-cert"); 064 defaultMappings.put("exe", "application/octet-stream"); 065 defaultMappings.put("gz", "application/x-gzip"); 066 defaultMappings.put("Z", "application/x-compress"); 067 defaultMappings.put("z", "application/x-compress"); 068 defaultMappings.put("hqx", "application/mac-binhex40"); 069 defaultMappings.put("mif", "application/x-mif"); 070 defaultMappings.put("ico", "image/x-icon"); 071 defaultMappings.put("ief", "image/ief"); 072 defaultMappings.put("tiff", "image/tiff"); 073 defaultMappings.put("tif", "image/tiff"); 074 defaultMappings.put("ras", "image/x-cmu-raster"); 075 defaultMappings.put("pnm", "image/x-portable-anymap"); 076 defaultMappings.put("pbm", "image/x-portable-bitmap"); 077 defaultMappings.put("pgm", "image/x-portable-graymap"); 078 defaultMappings.put("ppm", "image/x-portable-pixmap"); 079 defaultMappings.put("rgb", "image/x-rgb"); 080 defaultMappings.put("xbm", "image/x-xbitmap"); 081 defaultMappings.put("xpm", "image/x-xpixmap"); 082 defaultMappings.put("xwd", "image/x-xwindowdump"); 083 defaultMappings.put("au", "audio/basic"); 084 defaultMappings.put("snd", "audio/basic"); 085 defaultMappings.put("aif", "audio/x-aiff"); 086 defaultMappings.put("aiff", "audio/x-aiff"); 087 defaultMappings.put("aifc", "audio/x-aiff"); 088 defaultMappings.put("wav", "audio/x-wav"); 089 defaultMappings.put("mp3", "audio/mpeg"); 090 defaultMappings.put("mpeg", "video/mpeg"); 091 defaultMappings.put("mpg", "video/mpeg"); 092 defaultMappings.put("mpe", "video/mpeg"); 093 defaultMappings.put("qt", "video/quicktime"); 094 defaultMappings.put("mov", "video/quicktime"); 095 defaultMappings.put("avi", "video/x-msvideo"); 096 defaultMappings.put("movie", "video/x-sgi-movie"); 097 defaultMappings.put("avx", "video/x-rad-screenplay"); 098 defaultMappings.put("wrl", "x-world/x-vrml"); 099 defaultMappings.put("mpv2", "video/mpeg2"); 100 defaultMappings.put("jnlp", "application/x-java-jnlp-file"); 101 102 defaultMappings.put("eot", "application/vnd.ms-fontobject"); 103 defaultMappings.put("woff", "application/font-woff"); 104 defaultMappings.put("woff2", "application/font-woff2"); 105 defaultMappings.put("ttf", "application/x-font-ttf"); 106 defaultMappings.put("otf", "application/x-font-opentype"); 107 defaultMappings.put("sfnt", "application/font-sfnt"); 108 109 /* Add XML related MIMEs */ 110 111 defaultMappings.put("xml", "application/xml"); 112 defaultMappings.put("xhtml", "application/xhtml+xml"); 113 defaultMappings.put("xsl", "application/xml"); 114 defaultMappings.put("svg", "image/svg+xml"); 115 defaultMappings.put("svgz", "image/svg+xml"); 116 defaultMappings.put("wbmp", "image/vnd.wap.wbmp"); 117 defaultMappings.put("wml", "text/vnd.wap.wml"); 118 defaultMappings.put("wmlc", "application/vnd.wap.wmlc"); 119 defaultMappings.put("wmls", "text/vnd.wap.wmlscript"); 120 defaultMappings.put("wmlscriptc", "application/vnd.wap.wmlscriptc"); 121 122 /** 123 * 视频相关 124 */ 125 defaultMappings.put("asf", "video/x-ms-asf"); 126 defaultMappings.put("asx", "video/x-ms-asf"); 127 defaultMappings.put("flv", "video/x-flv"); 128 defaultMappings.put("mp4", "video/mp4"); 129 defaultMappings.put("mps", "video/x-mpeg"); 130 defaultMappings.put("mpv", "video/mpg"); 131 defaultMappings.put("mpa", "video/x-mpg"); 132 defaultMappings.put("m4e", "video/mpeg4"); 133 defaultMappings.put("m2v", "video/x-mpeg"); 134 defaultMappings.put("wmv", "video/x-ms-wmv"); 135 defaultMappings.put("3gp", "video/3gpp"); 136 defaultMappings.put("ts", "video/MP2T"); 137 138 139 /** 140 * 音频相关 141 */ 142 defaultMappings.put("mp2", "audio/mp2"); 143 defaultMappings.put("m3u", "audio/x-mpegurl"); 144 defaultMappings.put("m3u8", "audio/x-mpegurl"); 145 defaultMappings.put("mpga", "audio/rn-mpeg"); 146 defaultMappings.put("ra", "audio/vnd.rn-realaudio"); 147 defaultMappings.put("ram", "audio/x-pn-realaudio"); 148 defaultMappings.put("wax", "audio/x-ms-wax"); 149 defaultMappings.put("wma", "audio/x-ms-wma"); 150 151 /** 152 * 文档相关 153 */ 154 defaultMappings.put("doc", "application/msword"); 155 defaultMappings.put("docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); 156 defaultMappings.put("xls", "application/vnd.ms-excel"); 157 defaultMappings.put("xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 158 defaultMappings.put("pot", "application/vnd.ms-powerpoint"); 159 defaultMappings.put("ppt", "application/vnd.ms-powerpoint"); 160 defaultMappings.put("pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation"); 161 162 } 163 164 public static String getMimeType(String file) { 165 String lower = file.toLowerCase(); 166 int pos = lower.lastIndexOf('.'); 167 if (pos == -1) { 168 return null; //no extension 169 } 170 return defaultMappings.get(lower.substring(pos + 1)); 171 } 172 173}