Technorati Tag:
Programmazione,
C# Quando si lavora con il filesystem, in alcuni casi può essere utile conoscere il Content Type dei file che si stanno leggendo dal filesystem; con le API del .NET framework (namespace System.IO) non è possibile risalire al Content Type di un file presente nel filesystem [:’(].
Facendo una piccola ricerca con Google ho trovato che nel registro di sistema esiste un dizionario con le associazioni <estensione del file, Content Type> delle applicazioni installate sulla macchina su cui si sta lavorando.
La chiave che bisogna leggere è la seguente: “HKEY_CLASSES_ROOT\MIME->Database->Content Type”, in questo caso bisogna accedere al registro di sistema in lettura, quindi non dovrebbero esserci problemi, comunque bisogna tenere presente che con il registro si deve lavorare con cautela.
Dopo aver fatto l’accesso a questa chiave di registro utilizzando l’estensione del file come chiave di accesso, bisogna verificare il contenuto della chiave di registro che viene restituita, tutto questo può essere fatto con il codice che segue:
1: using System.IO;
2: using Microsoft.Win32;
3:
4: /// <summary>
5: /// Ricava il Mime Type dall'estensione del file
6: /// </summary>
7: /// <param name="percorso"></param>
8: /// <returns></returns>
9: private string GetContentTypeByExtension(string percorso)
10: {
11: string contentType = "application/unknown";
12: string ext = Path.GetExtension(percorso).ToLower();
13: RegistryKey regKey = Registry.ClassesRoot.OpenSubKey(ext);
14: //Verifica se si tratta di un valore conosciuto
15: if ((regKey != null) && (regKey.GetValue("Content Type") != null))
16: {
17: contentType = regKey.GetValue("Content Type").ToString();
18: }
19: return contentType;
20: }