Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Runtime.InteropServices;
- [DllImport(@"urlmon.dll", CharSet = CharSet.Auto)]
- private extern static System.UInt32 FindMimeFromData(
- System.UInt32 pBC,
- [MarshalAs(UnmanagedType.LPStr)] System.String pwzUrl,
- [MarshalAs(UnmanagedType.LPArray)] byte[] pBuffer,
- System.UInt32 cbSize,
- [MarshalAs(UnmanagedType.LPStr)] System.String pwzMimeProposed,
- System.UInt32 dwMimeFlags,
- out System.UInt32 ppwzMimeOut,
- System.UInt32 dwReserverd
- );
- public string getMimeFromFile(string filename)
- {
- if (!File.Exists(filename))
- throw new FileNotFoundException(filename + " not found");
- byte[] buffer = new byte[256];
- using (FileStream fs = new FileStream(filename, FileMode.Open))
- {
- if (fs.Length >= 256)
- fs.Read(buffer, 0, 256);
- else
- fs.Read(buffer, 0, (int)fs.Length);
- }
- try
- {
- System.UInt32 mimetype;
- FindMimeFromData(0, null, buffer, 256, null, 0, out mimetype, 0);
- System.IntPtr mimeTypePtr = new IntPtr(mimetype);
- string mime = Marshal.PtrToStringUni(mimeTypePtr);
- Marshal.FreeCoTaskMem(mimeTypePtr);
- return mime;
- }
- catch (Exception e)
- {
- return "unknown/unknown";
- }
- }
- using System.IO;
- using Microsoft.Win32;
- string GetMimeType(FileInfo fileInfo)
- {
- string mimeType = "application/unknown";
- RegistryKey regKey = Registry.ClassesRoot.OpenSubKey(
- fileInfo.Extension.ToLower()
- );
- if(regKey != null)
- {
- object contentType = regKey.GetValue("Content Type");
- if(contentType != null)
- mimeType = contentType.ToString();
- }
- return mimeType;
- }
- public static class MIMEAssistant
- {
- 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"},
- {"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"},
- {"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"},
- {"xslt", "application/xslt+xml"},
- {"xul", "application/vnd.mozilla.xul+xml"},
- {"xwd", "image/x-xwindowdump"},
- {"xyz", "chemical/x-xyz"},
- {"zip", "application/zip"}
- };
- public static string GetMIMEType(string fileName)
- {
- if (MIMETypesDictionary.ContainsKey(Path.GetExtension(fileName).Remove(0, 1)))
- {
- return MIMETypesDictionary[Path.GetExtension(fileName).Remove(0, 1)];
- }
- return "unknown/unknown";
- }
- }
- Public Shared Function GetFromFileName(ByVal fileName As String) As String
- Return GetFromExtension(Path.GetExtension(fileName).Remove(0, 1))
- End Function
- Public Shared Function GetFromExtension(ByVal extension As String) As String
- If extension.StartsWith("."c) Then
- extension = extension.Remove(0, 1)
- End If
- If MIMETypesDictionary.ContainsKey(extension) Then
- Return MIMETypesDictionary(extension)
- End If
- Return "unknown/unknown"
- End Function
- Private Shared ReadOnly MIMETypesDictionary As New Dictionary(Of String, String)() From { _
- {"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"}, _
- {"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"}, _
- {"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"}, _
- {"xslt", "application/xslt+xml"}, _
- {"xul", "application/vnd.mozilla.xul+xml"}, _
- {"xwd", "image/x-xwindowdump"}, _
- {"xyz", "chemical/x-xyz"}, _
- {"zip", "application/zip"} _
- }
Add Comment
Please, Sign In to add comment