Obtener el content-type de un fichero

2163 vistas

Los content-types se encuentran en la base de registro. "Bastará" en recorrer las asociaciones extensión / content-type para encontrar aquella que corresponda a la extensión de nuestro fichero.

Veamos una función que permite realizar esta búsqueda.



csharp
  1. public static string GetMIMEType(string filepath)
  2. {
  3.   RegistryPermission regPerm = new RegistryPermission(RegistryPermissionAccess.Read, "\\HKEY_CLASSES_ROOT");
  4.   RegistryKey classesRoot = Registry.ClassesRoot;
  5.   FileInfo fi = new FileInfo(filepath);
  6.   String dotExt = fi.Extension.ToLower();
  7.   RegistryKey typeKey = classesRoot.OpenSubKey(@"MIME\Database\Content Type");
  8.   String Keyname ="";
  9.   foreach (string keyname in typeKey.GetSubKeyNames())
  10.   {
  11.     RegistryKey curKey = classesRoot.OpenSubKey(@"MIME\Database\Content Type\" + keyname);
  12.     if ((String)curKey.GetValue("Extension") == dotExt)
  13.     {
  14.       Keyname = keyname;
  15.     }
  16.   }
  17.   return Keyname;
  18. }



Sin olvidar importar los namespaces siguientes:



csharp
  1. using System.IO;
  2. using System.Security.Permissions;
  3. using Microsoft.Win32;