La signature du fichier dans le .NET a déterminé le type de mime de fichier
Le type MIME de fichiers d'identification avec précision est essentiel pour le traitement et le fonctionnement corrects. Lorsque l'extension de fichier est manquante ou incorrecte, la signature du fichier doit s'appuyer sur le type de fichier pour déterminer avec précision le type de fichier. Cet article examine comment atteindre cette fonction dans le .NET.
Solution utilisant Urlmon.dll
La solution fournie à l'aide de la bibliothèque urlmon.dll pour extraire le type MIME en fonction de la signature de fichier. Cette méthode peut être implémentée via les étapes suivantes:
Introduire l'ensemble d'assemblage nécessaire:
Définissez la fonction FindmimeFromData:
<code class="language-csharp">using System.Runtime.InteropServices;</code>
Créez une fonction qui recherche le type MIME à partir du fichier:
<code class="language-csharp">[DllImport(@"urlmon.dll", CharSet = CharSet.Auto)] private static extern uint FindMimeFromData( uint pBC, [MarshalAs(UnmanagedType.LPStr)] string pwzUrl, [MarshalAs(UnmanagedType.LPArray)] byte[] pBuffer, uint cbSize, [MarshalAs(UnmanagedType.LPStr)] string pwzMimeProposed, uint dwMimeFlags, out uint ppwzMimeOut, uint dwReserverd );</code>
<code class="language-csharp">public static string GetMimeFromFile(string filename) { // 为简洁起见,省略文件验证 byte[] buffer = new byte[256]; //... try { uint mimetype; FindMimeFromData(0, null, buffer, 256, null, 0, out mimetype, 0); IntPtr mimeTypePtr = new IntPtr(mimetype); string mime = Marshal.PtrToStringUni(mimeTypePtr); Marshal.FreeCoTaskMem(mimeTypePtr); return mime; } catch (Exception e) { return "unknown/unknown"; } }</code>
Veuillez noter que certains code sont omis dans les fragments de code ci-dessus, tels que les 256 premiers octets de lecture du fichier dans le tableau . L'implémentation complète nécessite le traitement des erreurs et la logique de lecture des fichiers nécessaires. De plus, l'utilisation de la méthode peut dépendre du système d'exploitation et des problèmes de compatibilité peuvent exister dans différents environnements. Des solutions plus stables peuvent devoir envisager d'utiliser d'autres bibliothèques .NET ou implémenter une analyse de signature de fichiers par elles-mêmes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!