Skip to content

Instantly share code, notes, and snippets.

@hugoware
Created May 5, 2011 18:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hugoware/957656 to your computer and use it in GitHub Desktop.
Save hugoware/957656 to your computer and use it in GitHub Desktop.
Simple mime-type lookup
public class MimeTypeLocator {
#region Available Types
private static Dictionary<string, string> _MimeTypes = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase) {
{ "323", "text/h323" },
{ "acx", "application/internet-property-stream" },
{ "ai", "application/postscript" },
{ "aif", "audio/x-aiff" },
{ "aifc", "audio/x-aiff" },
{ "aiff", "audio/x-aiff" },
{ "asf", "video/x-ms-asf" },
{ "asr", "video/x-ms-asf" },
{ "asx", "video/x-ms-asf" },
{ "au", "audio/basic" },
{ "avi", "video/x-msvideo" },
{ "axs", "application/olescript" },
{ "bas", "text/plain" },
{ "bcpio", "application/x-bcpio" },
{ "bin", "application/octet-stream" },
{ "bmp", "image/bmp" },
{ "c", "text/plain" },
{ "cat", "application/vnd.ms-pkiseccat" },
{ "cdf", "application/x-cdf" },
{ "cer", "application/x-x509-ca-cert" },
{ "class", "application/octet-stream" },
{ "clp", "application/x-msclip" },
{ "cmx", "image/x-cmx" },
{ "cod", "image/cis-cod" },
{ "cpio", "application/x-cpio" },
{ "crd", "application/x-mscardfile" },
{ "crl", "application/pkix-crl" },
{ "crt", "application/x-x509-ca-cert" },
{ "csh", "application/x-csh" },
{ "css", "text/css" },
{ "dcr", "application/x-director" },
{ "der", "application/x-x509-ca-cert" },
{ "dir", "application/x-director" },
{ "dll", "application/x-msdownload" },
{ "dms", "application/octet-stream" },
{ "doc", "application/msword" },
{ "dot", "application/msword" },
{ "dvi", "application/x-dvi" },
{ "dxr", "application/x-director" },
{ "eps", "application/postscript" },
{ "etx", "text/x-setext" },
{ "evy", "application/envoy" },
{ "exe", "application/octet-stream" },
{ "fif", "application/fractals" },
{ "flr", "x-world/x-vrml" },
{ "gif", "image/gif" },
{ "gtar", "application/x-gtar" },
{ "gz", "application/x-gzip" },
{ "h", "text/plain" },
{ "hdf", "application/x-hdf" },
{ "hlp", "application/winhlp" },
{ "hqx", "application/mac-binhex40" },
{ "hta", "application/hta" },
{ "htc", "text/x-component" },
{ "htm", "text/html" },
{ "html", "text/html" },
{ "htt", "text/webviewhtml" },
{ "ico", "image/x-icon" },
{ "ief", "image/ief" },
{ "iii", "application/x-iphone" },
{ "ins", "application/x-internet-signup" },
{ "isp", "application/x-internet-signup" },
{ "jfif", "image/pipeg" },
{ "jpe", "image/jpeg" },
{ "jpeg", "image/jpeg" },
{ "jpg", "image/jpeg" },
{ "js", "application/x-javascript" },
{ "latex", "application/x-latex" },
{ "lha", "application/octet-stream" },
{ "lsf", "video/x-la-asf" },
{ "lsx", "video/x-la-asf" },
{ "lzh", "application/octet-stream" },
{ "m13", "application/x-msmediaview" },
{ "m14", "application/x-msmediaview" },
{ "m3u", "audio/x-mpegurl" },
{ "man", "application/x-troff-man" },
{ "mdb", "application/x-msaccess" },
{ "me", "application/x-troff-me" },
{ "mht", "message/rfc822" },
{ "mhtml", "message/rfc822" },
{ "mid", "audio/mid" },
{ "mny", "application/x-msmoney" },
{ "mov", "video/quicktime" },
{ "movie", "video/x-sgi-movie" },
{ "mp2", "video/mpeg" },
{ "mp3", "audio/mpeg" },
{ "mpa", "video/mpeg" },
{ "mpe", "video/mpeg" },
{ "mpeg", "video/mpeg" },
{ "mpg", "video/mpeg" },
{ "mpp", "application/vnd.ms-project" },
{ "mpv2", "video/mpeg" },
{ "ms", "application/x-troff-ms" },
{ "mvb", "application/x-msmediaview" },
{ "nws", "message/rfc822" },
{ "oda", "application/oda" },
{ "p10", "application/pkcs10" },
{ "p12", "application/x-pkcs12" },
{ "p7b", "application/x-pkcs7-certificates" },
{ "p7c", "application/x-pkcs7-mime" },
{ "p7m", "application/x-pkcs7-mime" },
{ "p7r", "application/x-pkcs7-certreqresp" },
{ "p7s", "application/x-pkcs7-signature" },
{ "pbm", "image/x-portable-bitmap" },
{ "pdf", "application/pdf" },
{ "pfx", "application/x-pkcs12" },
{ "pgm", "image/x-portable-graymap" },
{ "pko", "application/ynd.ms-pkipko" },
{ "pma", "application/x-perfmon" },
{ "pmc", "application/x-perfmon" },
{ "pml", "application/x-perfmon" },
{ "pmr", "application/x-perfmon" },
{ "pmw", "application/x-perfmon" },
{ "pnm", "image/x-portable-anymap" },
{ "po", ", application/vnd.ms-powerpoint" },
{ "ppm", "image/x-portable-pixmap" },
{ "pps", "application/vnd.ms-powerpoint" },
{ "ppt", "application/vnd.ms-powerpoint" },
{ "prf", "application/pics-rules" },
{ "ps", "application/postscript" },
{ "pub", "application/x-mspublisher" },
{ "qt", "video/quicktime" },
{ "ra", "audio/x-pn-realaudio" },
{ "ram", "audio/x-pn-realaudio" },
{ "ras", "image/x-cmu-raster" },
{ "rgb", "image/x-rgb" },
{ "rmi", "audio/mid" },
{ "roff", "application/x-troff" },
{ "rtf", "application/rtf" },
{ "rtx", "text/richtext" },
{ "scd", "application/x-msschedule" },
{ "sct", "text/scriptlet" },
{ "setpay", "application/set-payment-initiation" },
{ "setreg", "application/set-registration-initiation" },
{ "sh", "application/x-sh" },
{ "shar", "application/x-shar" },
{ "sit", "application/x-stuffit" },
{ "snd", "audio/basic" },
{ "spc", "application/x-pkcs7-certificates" },
{ "spl", "application/futuresplash" },
{ "src", "application/x-wais-source" },
{ "sst", "application/vnd.ms-pkicertstore" },
{ "stl", "application/vnd.ms-pkistl" },
{ "stm", "text/html" },
{ "svg", "image/svg+xml" },
{ "sv4cpio", "application/x-sv4cpio" },
{ "sv4crc", "application/x-sv4crc" },
{ "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" },
{ "tgz", "application/x-compressed" },
{ "tif", "image/tiff" },
{ "tiff", "image/tiff" },
{ "tr", "application/x-troff" },
{ "trm", "application/x-msterminal" },
{ "tsv", "text/tab-separated-values" },
{ "txt", "text/plain" },
{ "uls", "text/iuls" },
{ "ustar", "application/x-ustar" },
{ "vcf", "text/x-vcard" },
{ "vrml", "x-world/x-vrml" },
{ "wav", "audio/x-wav" },
{ "wcm", "application/vnd.ms-works" },
{ "wdb", "application/vnd.ms-works" },
{ "wks", "application/vnd.ms-works" },
{ "wmf", "application/x-msmetafile" },
{ "wps", "application/vnd.ms-works" },
{ "wri", "application/x-mswrite" },
{ "wrl", "x-world/x-vrml" },
{ "wrz", "x-world/x-vrml" },
{ "xaf", "x-world/x-vrml" },
{ "xbm", "image/x-xbitmap" },
{ "xla", "application/vnd.ms-excel" },
{ "xlc", "application/vnd.ms-excel" },
{ "xlm", "application/vnd.ms-excel" },
{ "xls", "application/vnd.ms-excel" },
{ "xlt", "application/vnd.ms-excel" },
{ "xlw", "application/vnd.ms-excel" },
{ "xof", "x-world/x-vrml" },
{ "xpm", "image/x-xpixmap" },
{ "xwd", "image/x-xwindowdump" },
{ "z", "application/x-compress" },
{ "zip", "application/zip" }
};
#endregion
#region Constants
private const string DEFAULT_MIME_TYPE = "application/octetstream";
private const string REGISTRY_CONTENT_TYPE = "Content Type";
#endregion
#region Constructors
public MimeTypeLocator() {
this.DefaultMimeType = "application/octetstream";
}
#endregion
#region Properties
public string DefaultMimeType { get; set; }
#endregion
#region Methods
public string GetMimeTypeFromExtension(string extension) {
extension = (extension ?? string.Empty).TrimStart(new char[] { '.' });
return (MimeTypeLocator._MimeTypes.ContainsKey(extension))
? MimeTypeLocator._MimeTypes[extension]
: this.DefaultMimeType;
}
public string GetMimeTypeFromPath(string path) {
string extension = Path.GetExtension(path);
return this.GetMimeTypeFromExtension(extension);
}
#endregion
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment