using System; using System.Collections; using System.IO; namespace LJLib.Tools.Utils { public static class MIMEHelper { public static string GetExType(byte[] filedata) { var fileHead = BitConverter.ToString(filedata, 0, 4).Replace("-", string.Empty).ToLower(); if (fileHead.StartsWith("ffd8")) { return "jpg"; } else if (fileHead.StartsWith("8950")) { return "png"; } else if (fileHead.StartsWith("47494638")) { return "gif"; } else if (fileHead.StartsWith("424d")) { return "bmp"; } else { return string.Empty; } } private const string MIMEType_MSTNEF="application/ms-tnef"; private const string Content_Transfer_Encoding_Tag="Content-Transfer-Encoding"; public static string GetContentTransferEncoding(string strBuffer, int pos) { int begin = strBuffer.ToLower().IndexOf(Content_Transfer_Encoding_Tag.ToLower(), pos); if(begin != -1) { int end = strBuffer.ToLower().IndexOf("\r\n".ToLower(), begin + 1); return strBuffer.Substring(begin + Content_Transfer_Encoding_Tag.Length + 1, end - begin - Content_Transfer_Encoding_Tag.Length).Trim(); } return ""; } public static bool IsMSTNEF(string strContentType) { if(!string.IsNullOrEmpty(strContentType)) if(strContentType.ToLower() == MIMEType_MSTNEF.ToLower()) return true; else return false; return false; } public static string ContentType(string strExtension) { if(MIMETypeList.ContainsKey(strExtension)) return MIMETypeList[strExtension].ToString(); return "application/octet-stream"; } private static Hashtable MIMETypeList { get; set; } static MIMEHelper() { MIMETypeList = new Hashtable { {".323", "text/h323"}, {".3gp", "video/3gpp"}, {".3gpp", "video/3gpp"}, {".acp", "audio/x-mei-aac"}, {".act", "text/xml"}, {".actproj", "text/plain"}, {".ade", "application/msaccess"}, {".adp", "application/msaccess"}, {".ai", "application/postscript"}, {".aif", "audio/aiff"}, {".aifc", "audio/aiff"}, {".aiff", "audio/aiff"}, {".asf", "video/x-ms-asf"}, {".asm", "text/plain"}, {".asx", "video/x-ms-asf"}, {".au", "audio/basic"}, {".avi", "video/avi"}, {".bmp", "image/bmp"}, {".bwp", "application/x-bwpreview"}, {".c", "text/plain"}, {".cat", "application/vnd.ms-pki.seccat"}, {".cc", "text/plain"}, {".cdf", "application/x-cdf"}, {".cer", "application/x-x509-ca-cert"}, {".cod", "text/plain"}, {".cpp", "text/plain"}, {".crl", "application/pkix-crl"}, {".crt", "application/x-x509-ca-cert"}, {".cs", "text/plain"}, {".css", "text/css"}, {".csv", "application/vnd.ms-excel"}, {".cxx", "text/plain"}, {".dbs", "text/plain"}, {".def", "text/plain"}, {".der", "application/x-x509-ca-cert"}, {".dib", "image/bmp"}, {".dif", "video/x-dv"}, {".dll", "application/x-msdownload"}, {".doc", "application/msword"}, {".dot", "application/msword"}, {".dsp", "text/plain"}, {".dsw", "text/plain"}, {".dv", "video/x-dv"}, {".edn", "application/vnd.adobe.edn"}, {".eml", "message/rfc822"}, {".eps", "application/postscript"}, {".etd", "application/x-ebx"}, {".etp", "text/plain"}, {".exe", "application/x-msdownload"}, {".ext", "text/plain"}, {".fdf", "application/vnd.fdf"}, {".fif", "application/fractals"}, {".fky", "text/plain"}, {".gif", "image/gif"}, {".gz", "application/x-gzip"}, {".h", "text/plain"}, {".hpp", "text/plain"}, {".hqx", "application/mac-binhex40"}, {".hta", "application/hta"}, {".htc", "text/x-component"}, {".htm", "text/html"}, {".html", "text/html"}, {".htt", "text/webviewhtml"}, {".hxx", "text/plain"}, {".i", "text/plain"}, {".iad", "application/x-iad"}, {".ico", "image/x-icon"}, {".ics", "text/calendar"}, {".idl", "text/plain"}, {".iii", "application/x-iphone"}, {".inc", "text/plain"}, {".infopathxml", "application/ms-infopath.xml"}, {".inl", "text/plain"}, {".ins", "application/x-internet-signup"}, {".iqy", "text/x-ms-iqy"}, {".isp", "application/x-internet-signup"}, {".java", "text/java"}, {".jfif", "image/jpeg"}, {".jnlp", "application/x-java-jnlp-file"}, {".jpe", "image/jpeg"}, {".jpeg", "image/jpeg"}, {".jpg", "image/jpeg"}, {".jsl", "text/plain"}, {".kci", "text/plain"}, {".la1", "audio/x-liquid-file"}, {".lar", "application/x-laplayer-reg"}, {".latex", "application/x-latex"}, {".lavs", "audio/x-liquid-secure"}, {".lgn", "text/plain"}, {".lmsff", "audio/x-la-lms"}, {".lqt", "audio/x-la-lqt"}, {".lst", "text/plain"}, {".m1v", "video/mpeg"}, {".m3u", "audio/mpegurl"}, {".m4e", "video/mpeg4"}, {".MAC", "image/x-macpaint"}, {".mak", "text/plain"}, {".man", "application/x-troff-man"}, {".map", "text/plain"}, {".mda", "application/msaccess"}, {".mdb", "application/msaccess"}, {".mde", "application/msaccess"}, {".mdi", "image/vnd.ms-modi"}, {".mfp", "application/x-shockwave-flash"}, {".mht", "message/rfc822"}, {".mhtml", "message/rfc822"}, {".mid", "audio/mid"}, {".midi", "audio/mid"}, {".mk", "text/plain"}, {".mnd", "audio/x-musicnet-download"}, {".mns", "audio/x-musicnet-stream"}, {".MP1", "audio/mp1"}, {".mp2", "video/mpeg"}, {".mp2v", "video/mpeg"}, {".mp3", "audio/mpeg"}, {".mp4", "video/mp4"}, {".mpa", "video/mpeg"}, {".mpe", "video/mpeg"}, {".mpeg", "video/mpeg"}, {".mpf", "application/vnd.ms-mediapackage"}, {".mpg", "video/mpeg"}, {".mpg4", "video/mp4"}, {".mpga", "audio/rn-mpeg"}, {".mpv2", "video/mpeg"}, {".NMW", "application/nmwb"}, {".nws", "message/rfc822"}, {".odc", "text/x-ms-odc"}, {".odh", "text/plain"}, {".odl", "text/plain"}, {".p10", "application/pkcs10"}, {".p12", "application/x-pkcs12"}, {".p7b", "application/x-pkcs7-certificates"}, {".p7c", "application/pkcs7-mime"}, {".p7m", "application/pkcs7-mime"}, {".p7r", "application/x-pkcs7-certreqresp"}, {".p7s", "application/pkcs7-signature"}, {".PCT", "image/pict"}, {".pdf", "application/pdf"}, {".pdx", "application/vnd.adobe.pdx"}, {".pfx", "application/x-pkcs12"}, {".pic", "image/pict"}, {".PICT", "image/pict"}, {".pko", "application/vnd.ms-pki.pko"}, {".png", "image/png"}, {".pnt", "image/x-macpaint"}, {".pntg", "image/x-macpaint"}, {".pot", "application/vnd.ms-powerpoint"}, {".ppa", "application/vnd.ms-powerpoint"}, {".pps", "application/vnd.ms-powerpoint"}, {".ppt", "application/vnd.ms-powerpoint"}, {".prc", "text/plain"}, {".prf", "application/pics-rules"}, {".ps", "application/postscript"}, {".pub", "application/vnd.ms-publisher"}, {".pwz", "application/vnd.ms-powerpoint"}, {".qt", "video/quicktime"}, {".qti", "image/x-quicktime"}, {".qtif", "image/x-quicktime"}, {".qtl", "application/x-quicktimeplayer"}, {".qup", "application/x-quicktimeupdater"}, {".r1m", "application/vnd.rn-recording"}, {".r3t", "text/vnd.rn-realtext3d"}, {".RA", "audio/vnd.rn-realaudio"}, {".RAM", "audio/x-pn-realaudio"}, {".rat", "application/rat-file"}, {".rc", "text/plain"}, {".rc2", "text/plain"}, {".rct", "text/plain"}, {".rec", "application/vnd.rn-recording"}, {".rgs", "text/plain"}, {".rjs", "application/vnd.rn-realsystem-rjs"}, {".rjt", "application/vnd.rn-realsystem-rjt"}, {".RM", "application/vnd.rn-realmedia"}, {".rmf", "application/vnd.adobe.rmf"}, {".rmi", "audio/mid"}, {".RMJ", "application/vnd.rn-realsystem-rmj"}, {".RMM", "audio/x-pn-realaudio"}, {".rms", "application/vnd.rn-realmedia-secure"}, {".rmvb", "application/vnd.rn-realmedia-vbr"}, {".RMX", "application/vnd.rn-realsystem-rmx"}, {".RNX", "application/vnd.rn-realplayer"}, {".rp", "image/vnd.rn-realpix"}, {".RPM", "audio/x-pn-realaudio-plugin"}, {".rqy", "text/x-ms-rqy"}, {".rsml", "application/vnd.rn-rsml"}, {".rt", "text/vnd.rn-realtext"}, {".rtf", "application/msword"}, {".rul", "text/plain"}, {".RV", "video/vnd.rn-realvideo"}, {".s", "text/plain"}, {".sc2", "application/schdpl32"}, {".scd", "application/schdpl32"}, {".sch", "application/schdpl32"}, {".sct", "text/scriptlet"}, {".sd2", "audio/x-sd2"}, {".sdp", "application/sdp"}, {".sit", "application/x-stuffit"}, {".slk", "application/vnd.ms-excel"}, {".sln", "application/octet-stream"}, {".SMI", "application/smil"}, {".smil", "application/smil"}, {".snd", "audio/basic"}, {".snp", "application/msaccess"}, {".spc", "application/x-pkcs7-certificates"}, {".spl", "application/futuresplash"}, {".sql", "text/plain"}, {".srf", "text/plain"}, {".ssm", "application/streamingmedia"}, {".sst", "application/vnd.ms-pki.certstore"}, {".stl", "application/vnd.ms-pki.stl"}, {".swf", "application/x-shockwave-flash"}, {".tab", "text/plain"}, {".tar", "application/x-tar"}, {".tdl", "text/xml"}, {".tgz", "application/x-compressed"}, {".tif", "image/tiff"}, {".tiff", "image/tiff"}, {".tlh", "text/plain"}, {".tli", "text/plain"}, {".torrent", "application/x-bittorrent"}, {".trg", "text/plain"}, {".txt", "text/plain"}, {".udf", "text/plain"}, {".udt", "text/plain"}, {".uls", "text/iuls"}, {".user", "text/plain"}, {".usr", "text/plain"}, {".vb", "text/plain"}, {".vcf", "text/x-vcard"}, {".vcproj", "text/plain"}, {".viw", "text/plain"}, {".vpg", "application/x-vpeg005"}, {".vspscc", "text/plain"}, {".vsscc", "text/plain"}, {".vssscc", "text/plain"}, {".wav", "audio/wav"}, {".wax", "audio/x-ms-wax"}, {".wbk", "application/msword"}, {".wiz", "application/msword"}, {".wm", "video/x-ms-wm"}, {".wma", "audio/x-ms-wma"}, {".wmd", "application/x-ms-wmd"}, {".wmv", "video/x-ms-wmv"}, {".wmx", "video/x-ms-wmx"}, {".wmz", "application/x-ms-wmz"}, {".wpl", "application/vnd.ms-wpl"}, {".wprj", "application/webzip"}, {".wsc", "text/scriptlet"}, {".wvx", "video/x-ms-wvx"}, {".XBM", "image/x-xbitmap"}, {".xdp", "application/vnd.adobe.xdp+xml"}, {".xfd", "application/vnd.adobe.xfd+xml"}, {".xfdf", "application/vnd.adobe.xfdf"}, {".xla", "application/vnd.ms-excel"}, {".xlb", "application/vnd.ms-excel"}, {".xlc", "application/vnd.ms-excel"}, {".xld", "application/vnd.ms-excel"}, {".xlk", "application/vnd.ms-excel"}, {".xll", "application/vnd.ms-excel"}, {".xlm", "application/vnd.ms-excel"}, {".xls", "application/vnd.ms-excel"}, {".xlt", "application/vnd.ms-excel"}, {".xlv", "application/vnd.ms-excel"}, {".xlw", "application/vnd.ms-excel"}, {".xml", "text/xml"}, {".xpl", "audio/scpls"}, {".xsl", "text/xml"}, {".z", "application/x-compress"}, {".zip", "application/x-zip-compressed"}, {".js", "application/x-javascript"}, {".apk", "application/vnd.android.package-archive"}, {".ipa", "application/vnd.iphone"} }; } /// Returns the MIME content-type for the supplied file extension /// string MIME type (Example: \"text/plain\") public static string GetMimeType(string strFileName) { try { string strFileExtension=new FileInfo(strFileName).Extension; string strContentType; bool MONO = Environment.OSVersion.Platform == PlatformID.Unix; if(MONO) { strContentType=ContentType(strFileExtension); } else { Microsoft.Win32.RegistryKey extKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(strFileExtension); strContentType = (string)extKey.GetValue("Content Type"); } if (strContentType != null) { return strContentType; } return "application/octet-stream"; } catch(Exception) { return "application/octet-stream"; } } } }