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 : 7048
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...

{C / C++ / C++.NET} EDITER UN FICHIER BIT PAR BIT
Bonjout, J'ai récemment eu besoin d'éditer un fichier bit à bit mais ne trouvant pas de moyen de ...

{PHP} CHARGER DES DONNÉES DEPUIS UN FICHIER TXT DANS UNE BASE DE DONNÉE
le titre dit tout dejàs ce script utilise une base de données Mysql les requêtes pour la création ...

{PHP} TRANSFORMER DU TEXTE OU DE L'HTML EN TEXTE CONFORME À LA NORME D'ENVOI D'EMAIL RFC2045 QUOTED PRINTABLE
suite à des envois de mail pour une newsletter, hotmail, msn live, yahoo et ymail ont mis en spam po...

{Visual Basic, VB6, VB.NET, VB 2005} INSERER TOUT TYPE DE FICHIERS DANS ORACLE EN VB.NET
Ce petit code permet d'ajouter tout type de fichiers dans oracle et par la suite de les récupérer, l...

{C / C++ / C++.NET} FICHIER ALBUM MUSICAL
.............................................................................creer un fichier conten...

{PHP} CLASSE SIMPLE DE GESTION DE FICHIERS
Bonjour, Dans le cadre d'un projet lié à mon lycée, j'ai dû développer un certain nombre de class...

{Visual Basic, VB6, VB.NET, VB 2005} CAPTURE ET ENREGISTREMENT D'UNE IMAGE DEPUIS UNE WEBCAM
Ce code permet de capturer une photo à partir d'un flux WebCam avec la technologie ActiveX. Inspiré ...

{Visual Basic, VB6, VB.NET, VB 2005} OUVRIR TOUS LES FICHIERS EXCEL D'UN DOSSIER ET DE SES SOUS-DOSSIERS
Petite macro permettant de choisir un dossier puis de parcourir le dossiers et ses sous-dossiers afi...