Les Snippets

Connexion

Récupérer le type MIME d'un fichier

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 04/10/2007 00:16:31 et initié par ShareVB [Liste]
Vue : 2874
Catégorie(s) : Base de registre, Fichier / Disque, Trucs & Astuces
Langages dispo pour ce code :
- C# 2.x
- VB 2005



Langage : C# 2.x
Date ajout : 08/10/2007
Posté par ShareVB [Liste]
        using Microsoft.Win32;
        using System.IO;
        /// <summary>
        /// Récupère le type MIME d'un fichier
        /// </summary>
        /// <param name="szFileName">Nom du fichier dont on veut le type MIME</param>
        /// <param name="forceDatabase">true pour rechercher 
        ///     dans HKEY_CLASSES_ROOT\MIME\DataBase\Content Type (MIME -> extension), 
        /// false pour rechercher 
        ///     dans HKEY_CLASSES_ROOT (extension -> MIME)</param>
        /// <returns>le type MIME ou null</returns>
        public static string GetMIMEType(string szFileName,bool forceDatabase)
        {
            //type MIME renvoyé
            string ret = null;
            //extension du fichier avec "."
            string szExt = Path.GetExtension(szFileName);
            //valeur d'une valeur d'une clé de registre
            object val = null;
            //si on veut lire dans HKEY_CLASSES_ROOT directement
            if (!forceDatabase)
            {
                //on essaie d'ouvrir la clé
                RegistryKey extKey = Registry.ClassesRoot.OpenSubKey(szExt);
                if (extKey != null)
                {
                    //il peut y avoir une valeur "Content Type" contenant le type MIME mais ce n'est pas obligatoire
                    val = extKey.GetValue("Content Type");
                    extKey.Close();
                }
            }
            //si on a déjà trouvé un type MIME et que l'on ne force pas la recherche dans HKEY_CLASSES_ROOT\MIME\DataBase\Content Type
            if (!forceDatabase && val != null)
                return val.ToString();
            else
            {
                //ouvre HKEY_CLASSES_ROOT\MIME\DataBase\Content Type
                RegistryKey contentTypeKey = Registry.ClassesRoot.OpenSubKey(@"MIME\Database\Content Type");
                //parcourt toutes les sous clés (types MIME connus)
                foreach (string subkey in contentTypeKey.GetSubKeyNames())
                {
                    //ouvre HKEY_CLASSES_ROOT\MIME\DataBase\Content Type\<type MIME>
                    RegistryKey contentTypeSubKey = contentTypeKey.OpenSubKey(subkey);
                    //récupère l'extension associée
                    object ext = contentTypeSubKey.GetValue("Extension");
                    //si ca correspond on a trouvé
                    if (ext != null && ext.ToString() == szExt)
                    {
                        ret = subkey;
                        break;
                    }
                    contentTypeSubKey.Close();
                }
                contentTypeKey.Close();
            }
            return ret;
        }

Langage : VB 2005
Date ajout : 08/12/2007
Posté par ShareVB [Liste]
        ''' <summary>
        ''' Récupère le type MIME d'un fichier
        ''' </summary>
        ''' <param name="szFileName">Nom du fichier dont on veut le type MIME</param>
        ''' <param name="forceDatabase">true pour rechercher 
        '''     dans HKEY_CLASSES_ROOT\MIME\DataBase\Content Type (MIME -> extension), 
        ''' false pour rechercher 
        '''     dans HKEY_CLASSES_ROOT (extension -> MIME)</param>
        ''' <returns>le type MIME ou null</returns>
        Public Shared Function GetMIMEType(ByVal szFileName As String, ByVal forceDatabase As Boolean) As String
            'type MIME renvoyé
            Dim ret As String = Nothing
            'extension du fichier avec "."
            Dim szExt As String = Path.GetExtension(szFileName)
            'valeur d'une valeur d'une clé de registre
            Dim val As Object = Nothing
            'si on veut lire dans HKEY_CLASSES_ROOT directement
            If Not forceDatabase Then
                'on essaie d'ouvrir la clé
                Dim extKey As RegistryKey = Registry.ClassesRoot.OpenSubKey(szExt)
                If Not extKey Is Nothing Then
                    'il peut y avoir une valeur "Content Type" contenant le type MIME mais ce n'est pas obligatoire
                    val = extKey.GetValue("Content Type")
                    extKey.Close()
                End If
            End If
            'si on a déjà trouvé un type MIME et que l'on ne force pas la recherche dans HKEY_CLASSES_ROOT\MIME\DataBase\Content Type
            If Not Not forceDatabase AndAlso val Is Nothing Then
                Return val.ToString()
            Else
                'ouvre HKEY_CLASSES_ROOT\MIME\DataBase\Content Type
                Dim contentTypeKey As RegistryKey = Registry.ClassesRoot.OpenSubKey("MIME\Database\Content Type")
                'parcourt toutes les sous clés (types MIME connus)
                For Each subkey As String In contentTypeKey.GetSubKeyNames()
                    'ouvre HKEY_CLASSES_ROOT\MIME\DataBase\Content Type\<type MIME>
                    Dim contentTypeSubKey As RegistryKey = contentTypeKey.OpenSubKey(subkey)
                    'récupère l'extension associée
                    Dim ext As Object = contentTypeSubKey.GetValue("Extension")
                    'si ca correspond on a trouvé
                    If Not ext Is Nothing AndAlso ext.ToString() = szExt Then
                        ret = subkey
                        Exit For
                    End If
                    contentTypeSubKey.Close()
                Next
                contentTypeKey.Close()
            End If
            Return ret
        End Function


Snippets en rapport avec : Fichier, Mime, Content type



Codes sources en rapport avec : Fichier, Mime, Content type

{PHP} TYPE DU FICHER
Cette petite fonction toute simple vous determine l'extension (et donc le type) d'un fichier. Il vo...

{PHP} UPLOAD CHEZ FREE QUI MARCHE!!
Je me suis inspiré d'une fonction BCOPY créer par BeB3RePHPLover: http://www.phpc...

{Visual Basic, VB6, VB.NET, VB 2005} TRANSFERT DE FICHIERS ENTRE 2 PC DISTANTS
Bonjour, Cette source permet, pour commencer en quelques mots, d'échanger des fichiers à travers ...

{Visual Basic, VB6, VB.NET, VB 2005} COMPARATEUR EXCEL EN MASSE, AMÉLIORATIONS
mabrouklepoux avait proposé un comparateur de fichiers Excel. http://www.vbfrance.com/code.aspx?ID=3...

{Visual Basic, VB6, VB.NET, VB 2005} GETNAMES : RÉCUPÈRE ET ÉCRIT TOUS LES NOMS DE FICHIERS D'UN DOSSIER
J'ai fait ce petit programme tout simple, qui aurait pu être créé par n'importe quel débutant, car j...

{Visual Basic, VB6, VB.NET, VB 2005} COUPEUR DE FICHIERS
Cette sources permet de couper des fichiers, et créer un .bat permettant de la reconstruire. Cette ...

{Visual Basic, VB6, VB.NET, VB 2005} DIRLISTING - LISTER UN DOSSIER ET SES SOUS DOSSIERS TRES RAPIDEMENT
Cette classe vous offre un moyen simple et rapide de lister le contenu d'un repertoire. Elle est in...

{Visual Basic, VB6, VB.NET, VB 2005} SAUVEGARDE AUTOMATIQUE
Ce logiciel sert à programmer des sauvegardes automatiques. Dans la version 2, vous pouvez choisir l...

{C# / C#.NET} SUPPRIMER LES TAG BOM DANS FICHIER UTF-8
Ce programme vous permettra du supprimer les tags au début des fichiers UTF-8 BOM. J’ai rajouté la ...

{C# / C#.NET} PARSER DE NODE XML ALTERNATIF
Ce petit code est capable de parser une ligne XML genre: Ou hello world Il n'effectu...