Created
October 3, 2008 12:26
-
-
Save atifaziz/14553 to your computer and use it in GitHub Desktop.
MIME Mapping (C#)
This file contains hidden or 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
| #region Imports | |
| using System; | |
| using System.Collections.Generic; | |
| using System.Linq; | |
| using System.Collections; | |
| using System.Configuration; | |
| using System.IO; | |
| #endregion | |
| public static class MimeMap | |
| { | |
| public const string ApplicationOctetStream = "application/octet-stream"; | |
| private static readonly Dictionary<string, string> _map; | |
| static MimeMap() | |
| { | |
| _map = CreateDefaultMap(); | |
| } | |
| public static string ContentTypeFromPath(string path) | |
| { | |
| return ContentTypeFromExtension(Path.GetExtension(path)); | |
| } | |
| public static string ContentTypeFromExtension(string extension) | |
| { | |
| extension = extension ?? string.Empty; | |
| if (extension.Length > 0) | |
| { | |
| if (extension[0] != '.') | |
| throw new ArgumentOutOfRangeException("extension"); | |
| if (extension.Length == 1) | |
| extension = string.Empty; | |
| } | |
| var contentType = _map[extension]; | |
| return !string.IsNullOrEmpty(contentType) ? contentType : ApplicationOctetStream; | |
| } | |
| #region Default MIME map | |
| private static Dictionary<string, string> CreateDefaultMap() | |
| { | |
| var map = new Dictionary<string, string>( | |
| /* capacity */ 220, | |
| /* comparer */ StringComparer.OrdinalIgnoreCase) | |
| { | |
| { ".323" , "text/h323" }, | |
| { ".asx" , "video/x-ms-asf" }, | |
| { ".acx" , "application/internet-property-stream" }, | |
| { ".ai" , "application/postscript" }, | |
| { ".aif" , "audio/x-aiff" }, | |
| { ".aiff" , "audio/aiff" }, | |
| { ".axs" , "application/olescript" }, | |
| { ".aifc" , "audio/aiff" }, | |
| { ".asr" , "video/x-ms-asf" }, | |
| { ".avi" , "video/x-msvideo" }, | |
| { ".asf" , "video/x-ms-asf" }, | |
| { ".au" , "audio/basic" }, | |
| { ".bin" , "application/octet-stream" }, | |
| { ".bas" , "text/plain" }, | |
| { ".bcpio" , "application/x-bcpio" }, | |
| { ".bmp" , "image/bmp" }, | |
| { ".cdf" , "application/x-cdf" }, | |
| { ".cat" , "application/vndms-pkiseccat" }, | |
| { ".crt" , "application/x-x509-ca-cert" }, | |
| { ".c" , "text/plain" }, | |
| { ".css" , "text/css" }, | |
| { ".cer" , "application/x-x509-ca-cert" }, | |
| { ".crl" , "application/pkix-crl" }, | |
| { ".cmx" , "image/x-cmx" }, | |
| { ".csh" , "application/x-csh" }, | |
| { ".cod" , "image/cis-cod" }, | |
| { ".cpio" , "application/x-cpio" }, | |
| { ".clp" , "application/x-msclip" }, | |
| { ".crd" , "application/x-mscardfile" }, | |
| { ".dll" , "application/x-msdownload" }, | |
| { ".dot" , "application/msword" }, | |
| { ".doc" , "application/msword" }, | |
| { ".dvi" , "application/x-dvi" }, | |
| { ".dir" , "application/x-director" }, | |
| { ".dxr" , "application/x-director" }, | |
| { ".der" , "application/x-x509-ca-cert" }, | |
| { ".dib" , "image/bmp" }, | |
| { ".dcr" , "application/x-director" }, | |
| { ".disco" , "text/xml" }, | |
| { ".exe" , "application/octet-stream" }, | |
| { ".etx" , "text/x-setext" }, | |
| { ".evy" , "application/envoy" }, | |
| { ".eml" , "message/rfc822" }, | |
| { ".eps" , "application/postscript" }, | |
| { ".flr" , "x-world/x-vrml" }, | |
| { ".fif" , "application/fractals" }, | |
| { ".gtar" , "application/x-gtar" }, | |
| { ".gif" , "image/gif" }, | |
| { ".gz" , "application/x-gzip" }, | |
| { ".hta" , "application/hta" }, | |
| { ".htc" , "text/x-component" }, | |
| { ".htt" , "text/webviewhtml" }, | |
| { ".h" , "text/plain" }, | |
| { ".hdf" , "application/x-hdf" }, | |
| { ".hlp" , "application/winhlp" }, | |
| { ".html" , "text/html" }, | |
| { ".htm" , "text/html" }, | |
| { ".hqx" , "application/mac-binhex40" }, | |
| { ".isp" , "application/x-internet-signup" }, | |
| { ".iii" , "application/x-iphone" }, | |
| { ".ief" , "image/ief" }, | |
| { ".ivf" , "video/x-ivf" }, | |
| { ".ins" , "application/x-internet-signup" }, | |
| { ".ico" , "image/x-icon" }, | |
| { ".jpg" , "image/jpeg" }, | |
| { ".jfif" , "image/pjpeg" }, | |
| { ".jpe" , "image/jpeg" }, | |
| { ".jpeg" , "image/jpeg" }, | |
| { ".js" , "application/x-javascript" }, | |
| { ".lsx" , "video/x-la-asf" }, | |
| { ".latex" , "application/x-latex" }, | |
| { ".lsf" , "video/x-la-asf" }, | |
| { ".mhtml" , "message/rfc822" }, | |
| { ".mny" , "application/x-msmoney" }, | |
| { ".mht" , "message/rfc822" }, | |
| { ".mid" , "audio/mid" }, | |
| { ".mpv2" , "video/mpeg" }, | |
| { ".man" , "application/x-troff-man" }, | |
| { ".mvb" , "application/x-msmediaview" }, | |
| { ".mpeg" , "video/mpeg" }, | |
| { ".m3u" , "audio/x-mpegurl" }, | |
| { ".mdb" , "application/x-msaccess" }, | |
| { ".mpp" , "application/vnd.ms-project" }, | |
| { ".m1v" , "video/mpeg" }, | |
| { ".mpa" , "video/mpeg" }, | |
| { ".me" , "application/x-troff-me" }, | |
| { ".m13" , "application/x-msmediaview" }, | |
| { ".movie" , "video/x-sgi-movie" }, | |
| { ".m14" , "application/x-msmediaview" }, | |
| { ".mpe" , "video/mpeg" }, | |
| { ".mp2" , "video/mpeg" }, | |
| { ".mov" , "video/quicktime" }, | |
| { ".mp3" , "audio/mpeg" }, | |
| { ".mpg" , "video/mpeg" }, | |
| { ".ms" , "application/x-troff-ms" }, | |
| { ".nc" , "application/x-netcdf" }, | |
| { ".nws" , "message/rfc822" }, | |
| { ".oda" , "application/oda" }, | |
| { ".ods" , "application/oleobject" }, | |
| { ".pmc" , "application/x-perfmon" }, | |
| { ".p7r" , "application/x-pkcs7-certreqresp" }, | |
| { ".p7b" , "application/x-pkcs7-certificates" }, | |
| { ".p7s" , "application/pkcs7-signature" }, | |
| { ".pmw" , "application/x-perfmon" }, | |
| { ".ps" , "application/postscript" }, | |
| { ".p7c" , "application/pkcs7-mime" }, | |
| { ".pbm" , "image/x-portable-bitmap" }, | |
| { ".ppm" , "image/x-portable-pixmap" }, | |
| { ".pub" , "application/x-mspublisher" }, | |
| { ".png" , "image/png" }, | |
| { ".pnm" , "image/x-portable-anymap" }, | |
| { ".pml" , "application/x-perfmon" }, | |
| { ".p10" , "application/pkcs10" }, | |
| { ".pfx" , "application/x-pkcs12" }, | |
| { ".p12" , "application/x-pkcs12" }, | |
| { ".pdf" , "application/pdf" }, | |
| { ".pps" , "application/vnd.ms-powerpoint" }, | |
| { ".p7m" , "application/pkcs7-mime" }, | |
| { ".pko" , "application/vndms-pkipko" }, | |
| { ".ppt" , "application/vnd.ms-powerpoint" }, | |
| { ".pmr" , "application/x-perfmon" }, | |
| { ".pma" , "application/x-perfmon" }, | |
| { ".pot" , "application/vnd.ms-powerpoint" }, | |
| { ".prf" , "application/pics-rules" }, | |
| { ".pgm" , "image/x-portable-graymap" }, | |
| { ".qt" , "video/quicktime" }, | |
| { ".ra" , "audio/x-pn-realaudio" }, | |
| { ".rgb" , "image/x-rgb" }, | |
| { ".ram" , "audio/x-pn-realaudio" }, | |
| { ".rmi" , "audio/mid" }, | |
| { ".ras" , "image/x-cmu-raster" }, | |
| { ".roff" , "application/x-troff" }, | |
| { ".rtf" , "application/rtf" }, | |
| { ".rtx" , "text/richtext" }, | |
| { ".sv4crc" , "application/x-sv4crc" }, | |
| { ".spc" , "application/x-pkcs7-certificates" }, | |
| { ".setreg" , "application/set-registration-initiation" }, | |
| { ".snd" , "audio/basic" }, | |
| { ".stl" , "application/vndms-pkistl" }, | |
| { ".setpay" , "application/set-payment-initiation" }, | |
| { ".stm" , "text/html" }, | |
| { ".shar" , "application/x-shar" }, | |
| { ".sh" , "application/x-sh" }, | |
| { ".sit" , "application/x-stuffit" }, | |
| { ".spl" , "application/futuresplash" }, | |
| { ".sct" , "text/scriptlet" }, | |
| { ".scd" , "application/x-msschedule" }, | |
| { ".sst" , "application/vndms-pkicertstore" }, | |
| { ".src" , "application/x-wais-source" }, | |
| { ".sv4cpio", "application/x-sv4cpio" }, | |
| { ".tex" , "application/x-tex" }, | |
| { ".tgz" , "application/x-compressed" }, | |
| { ".t" , "application/x-troff" }, | |
| { ".tar" , "application/x-tar" }, | |
| { ".tr" , "application/x-troff" }, | |
| { ".tif" , "image/tiff" }, | |
| { ".txt" , "text/plain" }, | |
| { ".texinfo", "application/x-texinfo" }, | |
| { ".trm" , "application/x-msterminal" }, | |
| { ".tiff" , "image/tiff" }, | |
| { ".tcl" , "application/x-tcl" }, | |
| { ".texi" , "application/x-texinfo" }, | |
| { ".tsv" , "text/tab-separated-values" }, | |
| { ".ustar" , "application/x-ustar" }, | |
| { ".uls" , "text/iuls" }, | |
| { ".vcf" , "text/x-vcard" }, | |
| { ".wps" , "application/vnd.ms-works" }, | |
| { ".wav" , "audio/wav" }, | |
| { ".wrz" , "x-world/x-vrml" }, | |
| { ".wri" , "application/x-mswrite" }, | |
| { ".wks" , "application/vnd.ms-works" }, | |
| { ".wmf" , "application/x-msmetafile" }, | |
| { ".wcm" , "application/vnd.ms-works" }, | |
| { ".wrl" , "x-world/x-vrml" }, | |
| { ".wdb" , "application/vnd.ms-works" }, | |
| { ".wsdl" , "text/xml" }, | |
| { ".xml" , "text/xml" }, | |
| { ".xlm" , "application/vnd.ms-excel" }, | |
| { ".xaf" , "x-world/x-vrml" }, | |
| { ".xla" , "application/vnd.ms-excel" }, | |
| { ".xls" , "application/vnd.ms-excel" }, | |
| { ".xof" , "x-world/x-vrml" }, | |
| { ".xlt" , "application/vnd.ms-excel" }, | |
| { ".xlc" , "application/vnd.ms-excel" }, | |
| { ".xsl" , "text/xml" }, | |
| { ".xbm" , "image/x-xbitmap" }, | |
| { ".xlw" , "application/vnd.ms-excel" }, | |
| { ".xpm" , "image/x-xpixmap" }, | |
| { ".xwd" , "image/x-xwindowdump" }, | |
| { ".xsd" , "text/xml" }, | |
| { ".z" , "application/x-compress" }, | |
| { ".zip" , "application/x-zip-compressed" }, | |
| { ".*" , "application/octet-stream" }, | |
| // Office 2007 MIME types | |
| // http://www.bram.us/2007/05/25/office-2007-mime-types-for-iis/ | |
| { ".docm" , "application/vnd.ms-word.document.macroEnabled.12" }, | |
| { ".docx" , "application/vnd.openxmlformats-officedocument.wordprocessingml.document" }, | |
| { ".dotm" , "application/vnd.ms-word.template.macroEnabled.12" }, | |
| { ".dotx" , "application/vnd.openxmlformats-officedocument.wordprocessingml.template" }, | |
| { ".potm" , "application/vnd.ms-powerpoint.template.macroEnabled.12" }, | |
| { ".potx" , "application/vnd.openxmlformats-officedocument.presentationml.template" }, | |
| { ".ppam" , "application/vnd.ms-powerpoint.addin.macroEnabled.12" }, | |
| { ".ppsm" , "application/vnd.ms-powerpoint.slideshow.macroEnabled.12" }, | |
| { ".ppsx" , "application/vnd.openxmlformats-officedocument.presentationml.slideshow" }, | |
| { ".pptm" , "application/vnd.ms-powerpoint.presentation.macroEnabled.12" }, | |
| { ".pptx" , "application/vnd.openxmlformats-officedocument.presentationml.presentation" }, | |
| { ".xlam" , "application/vnd.ms-excel.addin.macroEnabled.12" }, | |
| { ".xlsb" , "application/vnd.ms-excel.sheet.binary.macroEnabled.12" }, | |
| { ".xlsm" , "application/vnd.ms-excel.sheet.macroEnabled.12" }, | |
| { ".xlsx" , "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }, | |
| { ".xltm" , "application/vnd.ms-excel.template.macroEnabled.12" }, | |
| { ".xltx" , "application/vnd.openxmlformats-officedocument.spreadsheetml.template" }, | |
| }; | |
| // | |
| // NOTE! If you add more MIME mappings here, do not forget to | |
| // update the capacity of the hashtable. | |
| // | |
| return map; | |
| } | |
| #endregion | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment