Created
June 17, 2014 02:07
-
-
Save hadoan/660ccced826ab565e70a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static class MimeTypeUtility | |
{ | |
private const string OctetStream = "application/octet-stream"; | |
private static readonly Dictionary<string, string> MimeTypesDictionary = new Dictionary<string, string> | |
{ | |
{"ai", "application/postscript"}, | |
{"aif", "audio/x-aiff"}, | |
{"aifc", "audio/x-aiff"}, | |
{"aiff", "audio/x-aiff"}, | |
{"asc", "text/plain"}, | |
{"atom", "application/atom+xml"}, | |
{"au", "audio/basic"}, | |
{"avi", "video/x-msvideo"}, | |
{"bcpio", "application/x-bcpio"}, | |
{"bin", "application/octet-stream"}, | |
{"bmp", "image/bmp"}, | |
{"cdf", "application/x-netcdf"}, | |
{"cgm", "image/cgm"}, | |
{"class", "application/octet-stream"}, | |
{"cpio", "application/x-cpio"}, | |
{"cpt", "application/mac-compactpro"}, | |
{"csh", "application/x-csh"}, | |
{"css", "text/css"}, | |
{"dcr", "application/x-director"}, | |
{"dif", "video/x-dv"}, | |
{"dir", "application/x-director"}, | |
{"djv", "image/vnd.djvu"}, | |
{"djvu", "image/vnd.djvu"}, | |
{"dll", "application/octet-stream"}, | |
{"dmg", "application/octet-stream"}, | |
{"dms", "application/octet-stream"}, | |
{"doc", "application/msword"}, | |
{"docx","application/vnd.openxmlformats-officedocument.wordprocessingml.document"}, | |
{"dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template"}, | |
{"docm","application/vnd.ms-word.document.macroEnabled.12"}, | |
{"dotm","application/vnd.ms-word.template.macroEnabled.12"}, | |
{"dtd", "application/xml-dtd"}, | |
{"dv", "video/x-dv"}, | |
{"dvi", "application/x-dvi"}, | |
{"dxr", "application/x-director"}, | |
{"eps", "application/postscript"}, | |
{"etx", "text/x-setext"}, | |
{"exe", "application/octet-stream"}, | |
{"ez", "application/andrew-inset"}, | |
{"gif", "image/gif"}, | |
{"gram", "application/srgs"}, | |
{"grxml", "application/srgs+xml"}, | |
{"gtar", "application/x-gtar"}, | |
{"hdf", "application/x-hdf"}, | |
{"hqx", "application/mac-binhex40"}, | |
{"htm", "text/html"}, | |
{"html", "text/html"}, | |
{"ice", "x-conference/x-cooltalk"}, | |
{"ico", "image/x-icon"}, | |
{"ics", "text/calendar"}, | |
{"ief", "image/ief"}, | |
{"ifb", "text/calendar"}, | |
{"iges", "model/iges"}, | |
{"igs", "model/iges"}, | |
{"jnlp", "application/x-java-jnlp-file"}, | |
{"jp2", "image/jp2"}, | |
{"jpe", "image/jpeg"}, | |
{"jpeg", "image/jpeg"}, | |
{"jpg", "image/jpeg"}, | |
{"js", "application/x-javascript"}, | |
{"kar", "audio/midi"}, | |
{"latex", "application/x-latex"}, | |
{"lha", "application/octet-stream"}, | |
{"lzh", "application/octet-stream"}, | |
{"m3u", "audio/x-mpegurl"}, | |
{"m4a", "audio/mp4a-latm"}, | |
{"m4b", "audio/mp4a-latm"}, | |
{"m4p", "audio/mp4a-latm"}, | |
{"m4u", "video/vnd.mpegurl"}, | |
{"m4v", "video/x-m4v"}, | |
{"mac", "image/x-macpaint"}, | |
{"man", "application/x-troff-man"}, | |
{"mathml", "application/mathml+xml"}, | |
{"me", "application/x-troff-me"}, | |
{"mesh", "model/mesh"}, | |
{"mid", "audio/midi"}, | |
{"midi", "audio/midi"}, | |
{"mif", "application/vnd.mif"}, | |
{"mov", "video/quicktime"}, | |
{"movie", "video/x-sgi-movie"}, | |
{"mp2", "audio/mpeg"}, | |
{"mp3", "audio/mpeg"}, | |
{"mp4", "video/mp4"}, | |
{"mpe", "video/mpeg"}, | |
{"mpeg", "video/mpeg"}, | |
{"mpg", "video/mpeg"}, | |
{"mpga", "audio/mpeg"}, | |
{"ms", "application/x-troff-ms"}, | |
{"msh", "model/mesh"}, | |
{"mxu", "video/vnd.mpegurl"}, | |
{"nc", "application/x-netcdf"}, | |
{"oda", "application/oda"}, | |
{"ogg", "application/ogg"}, | |
{"pbm", "image/x-portable-bitmap"}, | |
{"pct", "image/pict"}, | |
{"pdb", "chemical/x-pdb"}, | |
{"pdf", "application/pdf"}, | |
{"pgm", "image/x-portable-graymap"}, | |
{"pgn", "application/x-chess-pgn"}, | |
{"pic", "image/pict"}, | |
{"pict", "image/pict"}, | |
{"png", "image/png"}, | |
{"pnm", "image/x-portable-anymap"}, | |
{"pnt", "image/x-macpaint"}, | |
{"pntg", "image/x-macpaint"}, | |
{"ppm", "image/x-portable-pixmap"}, | |
{"ppt", "application/vnd.ms-powerpoint"}, | |
{"pptx","application/vnd.openxmlformats-officedocument.presentationml.presentation"}, | |
{"potx","application/vnd.openxmlformats-officedocument.presentationml.template"}, | |
{"ppsx","application/vnd.openxmlformats-officedocument.presentationml.slideshow"}, | |
{"ppam","application/vnd.ms-powerpoint.addin.macroEnabled.12"}, | |
{"pptm","application/vnd.ms-powerpoint.presentation.macroEnabled.12"}, | |
{"potm","application/vnd.ms-powerpoint.template.macroEnabled.12"}, | |
{"ppsm","application/vnd.ms-powerpoint.slideshow.macroEnabled.12"}, | |
{"ps", "application/postscript"}, | |
{"qt", "video/quicktime"}, | |
{"qti", "image/x-quicktime"}, | |
{"qtif", "image/x-quicktime"}, | |
{"ra", "audio/x-pn-realaudio"}, | |
{"ram", "audio/x-pn-realaudio"}, | |
{"ras", "image/x-cmu-raster"}, | |
{"rdf", "application/rdf+xml"}, | |
{"rgb", "image/x-rgb"}, | |
{"rm", "application/vnd.rn-realmedia"}, | |
{"roff", "application/x-troff"}, | |
{"rtf", "text/rtf"}, | |
{"rtx", "text/richtext"}, | |
{"sgm", "text/sgml"}, | |
{"sgml", "text/sgml"}, | |
{"sh", "application/x-sh"}, | |
{"shar", "application/x-shar"}, | |
{"silo", "model/mesh"}, | |
{"sit", "application/x-stuffit"}, | |
{"skd", "application/x-koan"}, | |
{"skm", "application/x-koan"}, | |
{"skp", "application/x-koan"}, | |
{"skt", "application/x-koan"}, | |
{"smi", "application/smil"}, | |
{"smil", "application/smil"}, | |
{"snd", "audio/basic"}, | |
{"so", "application/octet-stream"}, | |
{"spl", "application/x-futuresplash"}, | |
{"src", "application/x-wais-source"}, | |
{"sv4cpio", "application/x-sv4cpio"}, | |
{"sv4crc", "application/x-sv4crc"}, | |
{"svg", "image/svg+xml"}, | |
{"swf", "application/x-shockwave-flash"}, | |
{"t", "application/x-troff"}, | |
{"tar", "application/x-tar"}, | |
{"tcl", "application/x-tcl"}, | |
{"tex", "application/x-tex"}, | |
{"texi", "application/x-texinfo"}, | |
{"texinfo", "application/x-texinfo"}, | |
{"tif", "image/tiff"}, | |
{"tiff", "image/tiff"}, | |
{"tr", "application/x-troff"}, | |
{"tsv", "text/tab-separated-values"}, | |
{"txt", "text/plain"}, | |
{"ustar", "application/x-ustar"}, | |
{"vcd", "application/x-cdlink"}, | |
{"vrml", "model/vrml"}, | |
{"vxml", "application/voicexml+xml"}, | |
{"wav", "audio/x-wav"}, | |
{"wbmp", "image/vnd.wap.wbmp"}, | |
{"wbmxl", "application/vnd.wap.wbxml"}, | |
{"wml", "text/vnd.wap.wml"}, | |
{"wmlc", "application/vnd.wap.wmlc"}, | |
{"wmls", "text/vnd.wap.wmlscript"}, | |
{"wmlsc", "application/vnd.wap.wmlscriptc"}, | |
{"wrl", "model/vrml"}, | |
{"xbm", "image/x-xbitmap"}, | |
{"xht", "application/xhtml+xml"}, | |
{"xhtml", "application/xhtml+xml"}, | |
{"xls", "application/vnd.ms-excel"}, | |
{"xml", "application/xml"}, | |
{"xpm", "image/x-xpixmap"}, | |
{"xsl", "application/xml"}, | |
{"xlsx","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}, | |
{"xltx","application/vnd.openxmlformats-officedocument.spreadsheetml.template"}, | |
{"xlsm","application/vnd.ms-excel.sheet.macroEnabled.12"}, | |
{"xltm","application/vnd.ms-excel.template.macroEnabled.12"}, | |
{"xlam","application/vnd.ms-excel.addin.macroEnabled.12"}, | |
{"xlsb","application/vnd.ms-excel.sheet.binary.macroEnabled.12"}, | |
{"xslt", "application/xslt+xml"}, | |
{"xul", "application/vnd.mozilla.xul+xml"}, | |
{"xwd", "image/x-xwindowdump"}, | |
{"xyz", "chemical/x-xyz"}, | |
{"zip", "application/zip"} | |
}; | |
public static string DetermineContentType(string extension) | |
{ | |
return string.IsNullOrWhiteSpace(extension) | |
? OctetStream | |
: (MimeTypesDictionary.ContainsKey(extension) | |
? MimeTypesDictionary[extension] | |
: OctetStream); | |
} | |
public static string DetermineContentType(Uri uri) | |
{ | |
var path = uri.AbsolutePath; | |
var lastIndex = path.LastIndexOf('.'); | |
if (lastIndex == -1) | |
{ | |
return OctetStream; | |
} | |
var extension = path.Substring(lastIndex + 1).ToLowerInvariant(); | |
return DetermineContentType(extension); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment