【问题标题】:Interface/enum listing standard mime-type constants接口/枚举列出标准 mime 类型常量
【发布时间】:2011-12-12 21:14:04
【问题描述】:

我正在标准库(如 apache commons、jax、jboss、javax)中寻找列出所有标准 mime 类型(又名内容类型)值的接口或枚举。

这个接口不应该被其他类拖得太深,这会导致难以将整个一堆作为 gwt 源代码包含在内。

例如

interface ContentType{
  String JSON = "Application/JSON";
  blah ... blah ...
}

或者,

enum ContentType{
  JSON("Application/JSON"),
  blah ... blah ...
}

【问题讨论】:

标签: java gwt mime-types content-type guava


【解决方案1】:

来自https://docs.oracle.com/javaee/7/api/javax/ws/rs/core/MediaType.html

staticjava.lang.String APPLICATION_ATOM_XML             "application/atom+xml"
staticMediaType        APPLICATION_ATOM_XML_TYPE        "application/atom+xml"
staticjava.lang.String APPLICATION_FORM_URLENCODED      "application/x-www-form-urlencoded"
staticMediaType        APPLICATION_FORM_URLENCODED_TYPE "application/x-www-form-urlencoded"
staticjava.lang.String APPLICATION_JSON                 "application/json"
staticMediaType        APPLICATION_JSON_TYPE            "application/json"
staticjava.lang.String APPLICATION_OCTET_STREAM         "application/octet-stream"
staticMediaType        APPLICATION_OCTET_STREAM_TYPE    "application/octet-stream"
staticjava.lang.String APPLICATION_SVG_XML              "application/svg+xml"
staticMediaType        APPLICATION_SVG_XML_TYPE         "application/svg+xml"
staticjava.lang.String APPLICATION_XHTML_XML            "application/xhtml+xml"
staticMediaType        APPLICATION_XHTML_XML_TYPE       "application/xhtml+xml"
staticjava.lang.String APPLICATION_XML                  "application/xml"
staticMediaType        APPLICATION_XML_TYPE             "application/xml"
staticjava.lang.String MEDIA_TYPE_WILDCARD              The value of a type or subtype wildcard: "*"
staticjava.lang.String MULTIPART_FORM_DATA              "multipart/form-data"
staticMediaType        MULTIPART_FORM_DATA_TYPE         "multipart/form-data"
staticjava.lang.String TEXT_HTML                        "text/html"
staticMediaType        TEXT_HTML_TYPE                   "text/html"
staticjava.lang.String TEXT_PLAIN                       "text/plain"
staticMediaType        TEXT_PLAIN_TYPE                  "text/plain"
staticjava.lang.String TEXT_XML                         "text/xml"
staticMediaType        TEXT_XML_TYPE                    "text/xml"
staticjava.lang.String WILDCARD                         "*/*"
staticMediaType        WILDCARD_TYPE                    "*/*"

【讨论】:

    【解决方案2】:

    如果您使用的是Spring Framework,那么有一个MediaType 类用于常见的内容类型:

    MediaType.TEXT_HTML 
    MediaType.TEXT_PLAIN 
    MediaType.TEXT_XML 
    MediaType.APPLICATION_JSON 
    MediaType.IMAGE_JPEG 
    ...
    

    【讨论】:

    • 这对我来说效果很好,但我需要使用 MediaType.foo_VALUE 部分。每个类都有一个对应的 _VALUE,即字符串。
    • 我确实要求过,interface/eunum 不应该被其他类拖得太深,否则无法在 GWT 中使用。 GWT 需要源代码而不是字节码,因为 GWT 是从 Java 到 JavaScript 的转译器。 Spring 框架在 GWT 的浏览器端不可用。
    • 在您需要“application/zip”的常量之前,这很好用。这个类没有APPLICATION_ZIP
    【解决方案3】:

    Guava

    为此我们有一个Guava 类:com.google.common.net.MediaType

    它与 Guava 12 一起发布,如源代码和 Issue 823 中所述。 Sources 也可用。

    【讨论】:

    • 如果您正在寻找带有扩展名的 mime 类型映射(就像我一样),请查看我几个小时前出于需要而写的 MimeTypes
    • 很遗憾com.google.common.net.MediaType 中没有定义字符串常量,因为MediaType.toString() 不是编译时常量,因此不能在注释中使用
    • 这实际上是一个 MIME 媒体类型的枚举。其他解决方案不是。
    【解决方案4】:

    现在还有来自包org.apache.httpcomponents.httpcore 的类org.apache.http.entity.ContentType,从4.2 开始。

    【讨论】:

    • 谢谢,但是该类的 javadoc 说它是在 v4.2 中添加的。我可以保证它不在 v4.0.1 中,这是我现在所坚持的。
    • 在需要application/pdf mime 类型之前,我一直使用它。不幸的是,这个类没有 pdf 的常量 :(
    【解决方案5】:

    javax.ws.rs.core.MediaType 来自JAX-RS

    【讨论】:

      【解决方案6】:

      Java 7 来救援!

      您可以传递文件或文件名,它将返回 MIME 类型。

      String mimeType = MimetypesFileTypeMap
          .getDefaultFileTypeMap()
          .getContentType(attachment.getFileName());
      

      http://docs.oracle.com/javase/7/docs/api/javax/activation/MimetypesFileTypeMap.html

      【讨论】:

      • 不过,这不会枚举存在的 MIME 类型。
      【解决方案7】:

      androidannotations 中还有一个 MediaType 类,以防您想与 android 一起使用!见here

      【讨论】:

        【解决方案8】:

        正如上面的答案所指出的,您可以使用具有所需常量的javax.ws.rs.core.MediaType

        我还想分享一个非常酷且方便的链接,我发现它在一个地方提供了对所有 Javax 常量的引用 - https://docs.oracle.com/javaee/7/api/constant-values.html

        【讨论】:

          【解决方案9】:

          如果您使用的是 android,则有多种选择,其中只有第一个是一种“枚举”:

          例如

          @Override
          public String getType(Uri uri) {
              return URLConnection.getFileNameMap().getContentTypeFor(
                      uri.getLastPathSegment());
          }
          

          【讨论】:

            【解决方案10】:

            我用一个静态类解决了这个问题:

            @SuppressWarnings("serial")
            public class MimeTypes {
            
                private static final HashMap<String, String> mimeTypes;
            
                static {
                    mimeTypes = new HashMap<String, String>() {
                        {
                            put(".323", "text/h323");
                            put(".3g2", "video/3gpp2");
                            put(".3gp", "video/3gpp");
                            put(".3gp2", "video/3gpp2");
                            put(".3gpp", "video/3gpp");
                            put(".7z", "application/x-7z-compressed");
                            put(".aa", "audio/audible");
                            put(".AAC", "audio/aac");
                            put(".aaf", "application/octet-stream");
                            put(".aax", "audio/vnd.audible.aax");
                            put(".ac3", "audio/ac3");
                            put(".aca", "application/octet-stream");
                            put(".accda", "application/msaccess.addin");
                            put(".accdb", "application/msaccess");
                            put(".accdc", "application/msaccess.cab");
                            put(".accde", "application/msaccess");
                            put(".accdr", "application/msaccess.runtime");
                            put(".accdt", "application/msaccess");
                            put(".accdw", "application/msaccess.webapplication");
                            put(".accft", "application/msaccess.ftemplate");
                            put(".acx", "application/internet-property-stream");
                            put(".AddIn", "text/xml");
                            put(".ade", "application/msaccess");
                            put(".adobebridge", "application/x-bridge-url");
                            put(".adp", "application/msaccess");
                            put(".ADT", "audio/vnd.dlna.adts");
                            put(".ADTS", "audio/aac");
                            put(".afm", "application/octet-stream");
                            put(".ai", "application/postscript");
                            put(".aif", "audio/x-aiff");
                            put(".aifc", "audio/aiff");
                            put(".aiff", "audio/aiff");
                            put(".air", "application/vnd.adobe.air-application-installer-package+zip");
                            put(".amc", "application/x-mpeg");
                            put(".application", "application/x-ms-application");
                            put(".art", "image/x-jg");
                            put(".asa", "application/xml");
                            put(".asax", "application/xml");
                            put(".ascx", "application/xml");
                            put(".asd", "application/octet-stream");
                            put(".asf", "video/x-ms-asf");
                            put(".ashx", "application/xml");
                            put(".asi", "application/octet-stream");
                            put(".asm", "text/plain");
                            put(".asmx", "application/xml");
                            put(".aspx", "application/xml");
                            put(".asr", "video/x-ms-asf");
                            put(".asx", "video/x-ms-asf");
                            put(".atom", "application/atom+xml");
                            put(".au", "audio/basic");
                            put(".avi", "video/x-msvideo");
                            put(".axs", "application/olescript");
                            put(".bas", "text/plain");
                            put(".bcpio", "application/x-bcpio");
                            put(".bin", "application/octet-stream");
                            put(".bmp", "image/bmp");
                            put(".c", "text/plain");
                            put(".cab", "application/octet-stream");
                            put(".caf", "audio/x-caf");
                            put(".calx", "application/vnd.ms-office.calx");
                            put(".cat", "application/vnd.ms-pki.seccat");
                            put(".cc", "text/plain");
                            put(".cd", "text/plain");
                            put(".cdda", "audio/aiff");
                            put(".cdf", "application/x-cdf");
                            put(".cer", "application/x-x509-ca-cert");
                            put(".chm", "application/octet-stream");
                            put(".class", "application/x-java-applet");
                            put(".clp", "application/x-msclip");
                            put(".cmx", "image/x-cmx");
                            put(".cnf", "text/plain");
                            put(".cod", "image/cis-cod");
                            put(".config", "application/xml");
                            put(".contact", "text/x-ms-contact");
                            put(".coverage", "application/xml");
                            put(".cpio", "application/x-cpio");
                            put(".cpp", "text/plain");
                            put(".crd", "application/x-mscardfile");
                            put(".crl", "application/pkix-crl");
                            put(".crt", "application/x-x509-ca-cert");
                            put(".cs", "text/plain");
                            put(".csdproj", "text/plain");
                            put(".csh", "application/x-csh");
                            put(".csproj", "text/plain");
                            put(".css", "text/css");
                            put(".csv", "text/csv");
                            put(".cur", "application/octet-stream");
                            put(".cxx", "text/plain");
                            put(".dat", "application/octet-stream");
                            put(".datasource", "application/xml");
                            put(".dbproj", "text/plain");
                            put(".dcr", "application/x-director");
                            put(".def", "text/plain");
                            put(".deploy", "application/octet-stream");
                            put(".der", "application/x-x509-ca-cert");
                            put(".dgml", "application/xml");
                            put(".dib", "image/bmp");
                            put(".dif", "video/x-dv");
                            put(".dir", "application/x-director");
                            put(".disco", "text/xml");
                            put(".dll", "application/x-msdownload");
                            put(".dll.config", "text/xml");
                            put(".dlm", "text/dlm");
                            put(".doc", "application/msword");
                            put(".docm", "application/vnd.ms-word.document.macroEnabled.12");
                            put(".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
                            put(".dot", "application/msword");
                            put(".dotm", "application/vnd.ms-word.template.macroEnabled.12");
                            put(".dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template");
                            put(".dsp", "application/octet-stream");
                            put(".dsw", "text/plain");
                            put(".dtd", "text/xml");
                            put(".dtsConfig", "text/xml");
                            put(".dv", "video/x-dv");
                            put(".dvi", "application/x-dvi");
                            put(".dwf", "drawing/x-dwf");
                            put(".dwp", "application/octet-stream");
                            put(".dxr", "application/x-director");
                            put(".eml", "message/rfc822");
                            put(".emz", "application/octet-stream");
                            put(".eot", "application/octet-stream");
                            put(".eps", "application/postscript");
                            put(".etl", "application/etl");
                            put(".etx", "text/x-setext");
                            put(".evy", "application/envoy");
                            put(".exe", "application/octet-stream");
                            put(".exe.config", "text/xml");
                            put(".fdf", "application/vnd.fdf");
                            put(".fif", "application/fractals");
                            put(".filters", "Application/xml");
                            put(".fla", "application/octet-stream");
                            put(".flr", "x-world/x-vrml");
                            put(".flv", "video/x-flv");
                            put(".fsscript", "application/fsharp-script");
                            put(".fsx", "application/fsharp-script");
                            put(".generictest", "application/xml");
                            put(".gif", "image/gif");
                            put(".group", "text/x-ms-group");
                            put(".gsm", "audio/x-gsm");
                            put(".gtar", "application/x-gtar");
                            put(".gz", "application/x-gzip");
                            put(".h", "text/plain");
                            put(".hdf", "application/x-hdf");
                            put(".hdml", "text/x-hdml");
                            put(".hhc", "application/x-oleobject");
                            put(".hhk", "application/octet-stream");
                            put(".hhp", "application/octet-stream");
                            put(".hlp", "application/winhlp");
                            put(".hpp", "text/plain");
                            put(".hqx", "application/mac-binhex40");
                            put(".hta", "application/hta");
                            put(".htc", "text/x-component");
                            put(".htm", "text/html");
                            put(".html", "text/html");
                            put(".htt", "text/webviewhtml");
                            put(".hxa", "application/xml");
                            put(".hxc", "application/xml");
                            put(".hxd", "application/octet-stream");
                            put(".hxe", "application/xml");
                            put(".hxf", "application/xml");
                            put(".hxh", "application/octet-stream");
                            put(".hxi", "application/octet-stream");
                            put(".hxk", "application/xml");
                            put(".hxq", "application/octet-stream");
                            put(".hxr", "application/octet-stream");
                            put(".hxs", "application/octet-stream");
                            put(".hxt", "text/html");
                            put(".hxv", "application/xml");
                            put(".hxw", "application/octet-stream");
                            put(".hxx", "text/plain");
                            put(".i", "text/plain");
                            put(".ico", "image/x-icon");
                            put(".ics", "application/octet-stream");
                            put(".idl", "text/plain");
                            put(".ief", "image/ief");
                            put(".iii", "application/x-iphone");
                            put(".inc", "text/plain");
                            put(".inf", "application/octet-stream");
                            put(".inl", "text/plain");
                            put(".ins", "application/x-internet-signup");
                            put(".ipa", "application/x-itunes-ipa");
                            put(".ipg", "application/x-itunes-ipg");
                            put(".ipproj", "text/plain");
                            put(".ipsw", "application/x-itunes-ipsw");
                            put(".iqy", "text/x-ms-iqy");
                            put(".isp", "application/x-internet-signup");
                            put(".ite", "application/x-itunes-ite");
                            put(".itlp", "application/x-itunes-itlp");
                            put(".itms", "application/x-itunes-itms");
                            put(".itpc", "application/x-itunes-itpc");
                            put(".IVF", "video/x-ivf");
                            put(".jar", "application/java-archive");
                            put(".java", "application/octet-stream");
                            put(".jck", "application/liquidmotion");
                            put(".jcz", "application/liquidmotion");
                            put(".jfif", "image/pjpeg");
                            put(".jnlp", "application/x-java-jnlp-file");
                            put(".jpb", "application/octet-stream");
                            put(".jpe", "image/jpeg");
                            put(".jpeg", "image/jpeg");
                            put(".jpg", "image/jpeg");
                            put(".js", "application/x-javascript");
                            put(".json", "application/json");
                            put(".jsx", "text/jscript");
                            put(".jsxbin", "text/plain");
                            put(".latex", "application/x-latex");
                            put(".library-ms", "application/windows-library+xml");
                            put(".lit", "application/x-ms-reader");
                            put(".loadtest", "application/xml");
                            put(".lpk", "application/octet-stream");
                            put(".lsf", "video/x-la-asf");
                            put(".lst", "text/plain");
                            put(".lsx", "video/x-la-asf");
                            put(".lzh", "application/octet-stream");
                            put(".m13", "application/x-msmediaview");
                            put(".m14", "application/x-msmediaview");
                            put(".m1v", "video/mpeg");
                            put(".m2t", "video/vnd.dlna.mpeg-tts");
                            put(".m2ts", "video/vnd.dlna.mpeg-tts");
                            put(".m2v", "video/mpeg");
                            put(".m3u", "audio/x-mpegurl");
                            put(".m3u8", "audio/x-mpegurl");
                            put(".m4a", "audio/m4a");
                            put(".m4b", "audio/m4b");
                            put(".m4p", "audio/m4p");
                            put(".m4r", "audio/x-m4r");
                            put(".m4v", "video/x-m4v");
                            put(".mac", "image/x-macpaint");
                            put(".mak", "text/plain");
                            put(".man", "application/x-troff-man");
                            put(".manifest", "application/x-ms-manifest");
                            put(".map", "text/plain");
                            put(".master", "application/xml");
                            put(".mda", "application/msaccess");
                            put(".mdb", "application/x-msaccess");
                            put(".mde", "application/msaccess");
                            put(".mdp", "application/octet-stream");
                            put(".me", "application/x-troff-me");
                            put(".mfp", "application/x-shockwave-flash");
                            put(".mht", "message/rfc822");
                            put(".mhtml", "message/rfc822");
                            put(".mid", "audio/mid");
                            put(".midi", "audio/mid");
                            put(".mix", "application/octet-stream");
                            put(".mk", "text/plain");
                            put(".mmf", "application/x-smaf");
                            put(".mno", "text/xml");
                            put(".mny", "application/x-msmoney");
                            put(".mod", "video/mpeg");
                            put(".mov", "video/quicktime");
                            put(".movie", "video/x-sgi-movie");
                            put(".mp2", "video/mpeg");
                            put(".mp2v", "video/mpeg");
                            put(".mp3", "audio/mpeg");
                            put(".mp4", "video/mp4");
                            put(".mp4v", "video/mp4");
                            put(".mpa", "video/mpeg");
                            put(".mpe", "video/mpeg");
                            put(".mpeg", "video/mpeg");
                            put(".mpf", "application/vnd.ms-mediapackage");
                            put(".mpg", "video/mpeg");
                            put(".mpp", "application/vnd.ms-project");
                            put(".mpv2", "video/mpeg");
                            put(".mqv", "video/quicktime");
                            put(".ms", "application/x-troff-ms");
                            put(".msi", "application/octet-stream");
                            put(".mso", "application/octet-stream");
                            put(".mts", "video/vnd.dlna.mpeg-tts");
                            put(".mtx", "application/xml");
                            put(".mvb", "application/x-msmediaview");
                            put(".mvc", "application/x-miva-compiled");
                            put(".mxp", "application/x-mmxp");
                            put(".nc", "application/x-netcdf");
                            put(".nsc", "video/x-ms-asf");
                            put(".nws", "message/rfc822");
                            put(".ocx", "application/octet-stream");
                            put(".oda", "application/oda");
                            put(".odc", "text/x-ms-odc");
                            put(".odh", "text/plain");
                            put(".odl", "text/plain");
                            put(".odp", "application/vnd.oasis.opendocument.presentation");
                            put(".ods", "application/oleobject");
                            put(".odt", "application/vnd.oasis.opendocument.text");
                            put(".one", "application/onenote");
                            put(".onea", "application/onenote");
                            put(".onepkg", "application/onenote");
                            put(".onetmp", "application/onenote");
                            put(".onetoc", "application/onenote");
                            put(".onetoc2", "application/onenote");
                            put(".orderedtest", "application/xml");
                            put(".osdx", "application/opensearchdescription+xml");
                            put(".p10", "application/pkcs10");
                            put(".p12", "application/x-pkcs12");
                            put(".p7b", "application/x-pkcs7-certificates");
                            put(".p7c", "application/pkcs7-mime");
                            put(".p7m", "application/pkcs7-mime");
                            put(".p7r", "application/x-pkcs7-certreqresp");
                            put(".p7s", "application/pkcs7-signature");
                            put(".pbm", "image/x-portable-bitmap");
                            put(".pcast", "application/x-podcast");
                            put(".pct", "image/pict");
                            put(".pcx", "application/octet-stream");
                            put(".pcz", "application/octet-stream");
                            put(".pdf", "application/pdf");
                            put(".pfb", "application/octet-stream");
                            put(".pfm", "application/octet-stream");
                            put(".pfx", "application/x-pkcs12");
                            put(".pgm", "image/x-portable-graymap");
                            put(".pic", "image/pict");
                            put(".pict", "image/pict");
                            put(".pkgdef", "text/plain");
                            put(".pkgundef", "text/plain");
                            put(".pko", "application/vnd.ms-pki.pko");
                            put(".pls", "audio/scpls");
                            put(".pma", "application/x-perfmon");
                            put(".pmc", "application/x-perfmon");
                            put(".pml", "application/x-perfmon");
                            put(".pmr", "application/x-perfmon");
                            put(".pmw", "application/x-perfmon");
                            put(".png", "image/png");
                            put(".pnm", "image/x-portable-anymap");
                            put(".pnt", "image/x-macpaint");
                            put(".pntg", "image/x-macpaint");
                            put(".pnz", "image/png");
                            put(".pot", "application/vnd.ms-powerpoint");
                            put(".potm", "application/vnd.ms-powerpoint.template.macroEnabled.12");
                            put(".potx", "application/vnd.openxmlformats-officedocument.presentationml.template");
                            put(".ppa", "application/vnd.ms-powerpoint");
                            put(".ppam", "application/vnd.ms-powerpoint.addin.macroEnabled.12");
                            put(".ppm", "image/x-portable-pixmap");
                            put(".pps", "application/vnd.ms-powerpoint");
                            put(".ppsm", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12");
                            put(".ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow");
                            put(".ppt", "application/vnd.ms-powerpoint");
                            put(".pptm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12");
                            put(".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation");
                            put(".prf", "application/pics-rules");
                            put(".prm", "application/octet-stream");
                            put(".prx", "application/octet-stream");
                            put(".ps", "application/postscript");
                            put(".psc1", "application/PowerShell");
                            put(".psd", "application/octet-stream");
                            put(".psess", "application/xml");
                            put(".psm", "application/octet-stream");
                            put(".psp", "application/octet-stream");
                            put(".pub", "application/x-mspublisher");
                            put(".pwz", "application/vnd.ms-powerpoint");
                            put(".qht", "text/x-html-insertion");
                            put(".qhtm", "text/x-html-insertion");
                            put(".qt", "video/quicktime");
                            put(".qti", "image/x-quicktime");
                            put(".qtif", "image/x-quicktime");
                            put(".qtl", "application/x-quicktimeplayer");
                            put(".qxd", "application/octet-stream");
                            put(".ra", "audio/x-pn-realaudio");
                            put(".ram", "audio/x-pn-realaudio");
                            put(".rar", "application/octet-stream");
                            put(".ras", "image/x-cmu-raster");
                            put(".rat", "application/rat-file");
                            put(".rc", "text/plain");
                            put(".rc2", "text/plain");
                            put(".rct", "text/plain");
                            put(".rdlc", "application/xml");
                            put(".resx", "application/xml");
                            put(".rf", "image/vnd.rn-realflash");
                            put(".rgb", "image/x-rgb");
                            put(".rgs", "text/plain");
                            put(".rm", "application/vnd.rn-realmedia");
                            put(".rmi", "audio/mid");
                            put(".rmp", "application/vnd.rn-rn_music_package");
                            put(".roff", "application/x-troff");
                            put(".rpm", "audio/x-pn-realaudio-plugin");
                            put(".rqy", "text/x-ms-rqy");
                            put(".rtf", "application/rtf");
                            put(".rtx", "text/richtext");
                            put(".ruleset", "application/xml");
                            put(".s", "text/plain");
                            put(".safariextz", "application/x-safari-safariextz");
                            put(".scd", "application/x-msschedule");
                            put(".sct", "text/scriptlet");
                            put(".sd2", "audio/x-sd2");
                            put(".sdp", "application/sdp");
                            put(".sea", "application/octet-stream");
                            put(".searchConnector-ms", "application/windows-search-connector+xml");
                            put(".setpay", "application/set-payment-initiation");
                            put(".setreg", "application/set-registration-initiation");
                            put(".settings", "application/xml");
                            put(".sgimb", "application/x-sgimb");
                            put(".sgml", "text/sgml");
                            put(".sh", "application/x-sh");
                            put(".shar", "application/x-shar");
                            put(".shtml", "text/html");
                            put(".sit", "application/x-stuffit");
                            put(".sitemap", "application/xml");
                            put(".skin", "application/xml");
                            put(".sldm", "application/vnd.ms-powerpoint.slide.macroEnabled.12");
                            put(".sldx", "application/vnd.openxmlformats-officedocument.presentationml.slide");
                            put(".slk", "application/vnd.ms-excel");
                            put(".sln", "text/plain");
                            put(".slupkg-ms", "application/x-ms-license");
                            put(".smd", "audio/x-smd");
                            put(".smi", "application/octet-stream");
                            put(".smx", "audio/x-smd");
                            put(".smz", "audio/x-smd");
                            put(".snd", "audio/basic");
                            put(".snippet", "application/xml");
                            put(".snp", "application/octet-stream");
                            put(".sol", "text/plain");
                            put(".sor", "text/plain");
                            put(".spc", "application/x-pkcs7-certificates");
                            put(".spl", "application/futuresplash");
                            put(".src", "application/x-wais-source");
                            put(".srf", "text/plain");
                            put(".SSISDeploymentManifest", "text/xml");
                            put(".ssm", "application/streamingmedia");
                            put(".sst", "application/vnd.ms-pki.certstore");
                            put(".stl", "application/vnd.ms-pki.stl");
                            put(".sv4cpio", "application/x-sv4cpio");
                            put(".sv4crc", "application/x-sv4crc");
                            put(".svc", "application/xml");
                            put(".swf", "application/x-shockwave-flash");
                            put(".t", "application/x-troff");
                            put(".tar", "application/x-tar");
                            put(".tcl", "application/x-tcl");
                            put(".testrunconfig", "application/xml");
                            put(".testsettings", "application/xml");
                            put(".tex", "application/x-tex");
                            put(".texi", "application/x-texinfo");
                            put(".texinfo", "application/x-texinfo");
                            put(".tgz", "application/x-compressed");
                            put(".thmx", "application/vnd.ms-officetheme");
                            put(".thn", "application/octet-stream");
                            put(".tif", "image/tiff");
                            put(".tiff", "image/tiff");
                            put(".tlh", "text/plain");
                            put(".tli", "text/plain");
                            put(".toc", "application/octet-stream");
                            put(".tr", "application/x-troff");
                            put(".trm", "application/x-msterminal");
                            put(".trx", "application/xml");
                            put(".ts", "video/vnd.dlna.mpeg-tts");
                            put(".tsv", "text/tab-separated-values");
                            put(".ttf", "application/octet-stream");
                            put(".tts", "video/vnd.dlna.mpeg-tts");
                            put(".txt", "text/plain");
                            put(".u32", "application/octet-stream");
                            put(".uls", "text/iuls");
                            put(".user", "text/plain");
                            put(".ustar", "application/x-ustar");
                            put(".vb", "text/plain");
                            put(".vbdproj", "text/plain");
                            put(".vbk", "video/mpeg");
                            put(".vbproj", "text/plain");
                            put(".vbs", "text/vbscript");
                            put(".vcf", "text/x-vcard");
                            put(".vcproj", "Application/xml");
                            put(".vcs", "text/plain");
                            put(".vcxproj", "Application/xml");
                            put(".vddproj", "text/plain");
                            put(".vdp", "text/plain");
                            put(".vdproj", "text/plain");
                            put(".vdx", "application/vnd.ms-visio.viewer");
                            put(".vml", "text/xml");
                            put(".vscontent", "application/xml");
                            put(".vsct", "text/xml");
                            put(".vsd", "application/vnd.visio");
                            put(".vsi", "application/ms-vsi");
                            put(".vsix", "application/vsix");
                            put(".vsixlangpack", "text/xml");
                            put(".vsixmanifest", "text/xml");
                            put(".vsmdi", "application/xml");
                            put(".vspscc", "text/plain");
                            put(".vss", "application/vnd.visio");
                            put(".vsscc", "text/plain");
                            put(".vssettings", "text/xml");
                            put(".vssscc", "text/plain");
                            put(".vst", "application/vnd.visio");
                            put(".vstemplate", "text/xml");
                            put(".vsto", "application/x-ms-vsto");
                            put(".vsw", "application/vnd.visio");
                            put(".vsx", "application/vnd.visio");
                            put(".vtx", "application/vnd.visio");
                            put(".wav", "audio/wav");
                            put(".wave", "audio/wav");
                            put(".wax", "audio/x-ms-wax");
                            put(".wbk", "application/msword");
                            put(".wbmp", "image/vnd.wap.wbmp");
                            put(".wcm", "application/vnd.ms-works");
                            put(".wdb", "application/vnd.ms-works");
                            put(".wdp", "image/vnd.ms-photo");
                            put(".webarchive", "application/x-safari-webarchive");
                            put(".webtest", "application/xml");
                            put(".wiq", "application/xml");
                            put(".wiz", "application/msword");
                            put(".wks", "application/vnd.ms-works");
                            put(".WLMP", "application/wlmoviemaker");
                            put(".wlpginstall", "application/x-wlpg-detect");
                            put(".wlpginstall3", "application/x-wlpg3-detect");
                            put(".wm", "video/x-ms-wm");
                            put(".wma", "audio/x-ms-wma");
                            put(".wmd", "application/x-ms-wmd");
                            put(".wmf", "application/x-msmetafile");
                            put(".wml", "text/vnd.wap.wml");
                            put(".wmlc", "application/vnd.wap.wmlc");
                            put(".wmls", "text/vnd.wap.wmlscript");
                            put(".wmlsc", "application/vnd.wap.wmlscriptc");
                            put(".wmp", "video/x-ms-wmp");
                            put(".wmv", "video/x-ms-wmv");
                            put(".wmx", "video/x-ms-wmx");
                            put(".wmz", "application/x-ms-wmz");
                            put(".wpl", "application/vnd.ms-wpl");
                            put(".wps", "application/vnd.ms-works");
                            put(".wri", "application/x-mswrite");
                            put(".wrl", "x-world/x-vrml");
                            put(".wrz", "x-world/x-vrml");
                            put(".wsc", "text/scriptlet");
                            put(".wsdl", "text/xml");
                            put(".wvx", "video/x-ms-wvx");
                            put(".x", "application/directx");
                            put(".xaf", "x-world/x-vrml");
                            put(".xaml", "application/xaml+xml");
                            put(".xap", "application/x-silverlight-app");
                            put(".xbap", "application/x-ms-xbap");
                            put(".xbm", "image/x-xbitmap");
                            put(".xdr", "text/plain");
                            put(".xht", "application/xhtml+xml");
                            put(".xhtml", "application/xhtml+xml");
                            put(".xla", "application/vnd.ms-excel");
                            put(".xlam", "application/vnd.ms-excel.addin.macroEnabled.12");
                            put(".xlc", "application/vnd.ms-excel");
                            put(".xld", "application/vnd.ms-excel");
                            put(".xlk", "application/vnd.ms-excel");
                            put(".xll", "application/vnd.ms-excel");
                            put(".xlm", "application/vnd.ms-excel");
                            put(".xls", "application/vnd.ms-excel");
                            put(".xlsb", "application/vnd.ms-excel.sheet.binary.macroEnabled.12");
                            put(".xlsm", "application/vnd.ms-excel.sheet.macroEnabled.12");
                            put(".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
                            put(".xlt", "application/vnd.ms-excel");
                            put(".xltm", "application/vnd.ms-excel.template.macroEnabled.12");
                            put(".xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template");
                            put(".xlw", "application/vnd.ms-excel");
                            put(".xml", "text/xml");
                            put(".xmta", "application/xml");
                            put(".xof", "x-world/x-vrml");
                            put(".XOML", "text/plain");
                            put(".xpm", "image/x-xpixmap");
                            put(".xps", "application/vnd.ms-xpsdocument");
                            put(".xrm-ms", "text/xml");
                            put(".xsc", "application/xml");
                            put(".xsd", "text/xml");
                            put(".xsf", "text/xml");
                            put(".xsl", "text/xml");
                            put(".xslt", "text/xml");
                            put(".xsn", "application/octet-stream");
                            put(".xss", "application/xml");
                            put(".xtp", "application/octet-stream");
                            put(".xwd", "image/x-xwindowdump");
                            put(".z", "application/x-compress");
                            put(".zip", "application/x-zip-compressed");
                        }
                    };
                }
            
                public static String getMimeType(String extension) {
                    if (extension == null) {
                        return null;
                    }
            
                    if (!extension.startsWith(".")) {
                        extension = "." + extension.toLowerCase(Locale.getDefault());
                    }
            
                    String mime = mimeTypes.get(extension);
            
                    return mime != null ? mime : "application/octet-stream";
                }
            }
            

            【讨论】:

            • 我喜欢这个解决方案 :),那是什么:“三思而后行编码一次”,对不起,我正忙于编码。
            • 同意:不要使用新的依赖项。公平地说,他们正在寻找他们可能已经进口的东西......但我更喜欢这个答案。
            【解决方案11】:

            正如之前的回答中已经发布的那样,大多数常见的 MIME 类型都是在网络服务器中配置的。例如在 tomcat conf/ 我们有 web.xml 配置了以下 MIME:

               <mime-mapping>
                  <extension>abs</extension>
                  <mime-type>audio/x-mpeg</mime-type>
               </mime-mapping>
               <mime-mapping>
                  <extension>ai</extension>
                  <mime-type>application/postscript</mime-type>
               </mime-mapping>
               <mime-mapping>
                  <extension>aif</extension>
                  <mime-type>audio/x-aiff</mime-type>
               </mime-mapping>
            ...
            

            创建一个启动监听器,它在 Web 应用程序启动时启动并解析此 XML 文件并为您创建 ENUMS 并将其绑定到 servlet 上下文以共享下游。

            【讨论】:

            • 对于一个简单的需求来说,这听起来非常复杂,因为有一个可用的 mimetypes 列表。此外,mimetypes 不会有太大变化,那么为什么要一遍又一遍地解析它们呢?这就是枚举和常量的用途。
            • 当列表已经在网络服务器中时,为什么要重新发明轮子。为什么要硬编码——只需编写一个简单的 xml 解析器来读取值并在 Web 服务器启动时将其缓存一次。明天,如果您需要支持新的 MIME 类型,无论如何都需要更新您的网络服务器并重新启动,解析器方法在这些情况下会有所帮助。无需在多个地方进行更改,只需更改 Web 服务器配置即可。
            • 如果你想支持一种新的 mime 类型,你很可能会编写一些自定义代码,因为没有办法通用地处理新的 mime 类型。 (除非你只是将它传递给另一个系统,在这种情况下你不需要解析它。)
            猜你喜欢
            • 2023-03-06
            • 1970-01-01
            • 2016-08-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-09-22
            相关资源
            最近更新 更多