Heim >Backend-Entwicklung >C++ >Wie kann ich den MIME -Typ einer Datei mithilfe von Dateisignaturen in .NET bestimmen?
Die Signatur der Datei in der .NET ermittelt den Dateimime -Typ
Der MIME -Typ der genau identifizierenden Dateien ist für die korrekte Verarbeitung und den richtigen Betrieb von wesentlicher Bedeutung. Wenn die Dateierweiterung fehlt oder falsch ist, muss sich die Dateisignatur auf den Dateityp verlassen, um den Dateityp genau zu bestimmen. In diesem Artikel wird erläutert, wie diese Funktion im .NET erreicht werden kann.
Lösung mit urlmon.dll
Die mit der urlmon.dll -Bibliothek bereitgestellte Lösung, um den MIME -Typ basierend auf der Dateisignatur zu extrahieren. Diese Methode kann in den folgenden Schritten implementiert werden:
Führen Sie den erforderlichen Montagesatz ein:
Definieren Sie die FindMimimFromData -Funktion:
<code class="language-csharp">using System.Runtime.InteropServices;</code>
Erstellen Sie eine Funktion, die den MIME -Typ aus der Datei durchsucht:
<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>
Bitte beachten Sie, dass in den obigen Codefragmenten ein Code weggelassen wird, z. Die vollständige Implementierung erfordert die erforderliche Fehlerverarbeitung und Logik des Lesens von Dateien. Darüber hinaus kann die Verwendung der -Methode vom Betriebssystem abhängen, und Kompatibilitätsprobleme können in verschiedenen Umgebungen vorhanden sein. Stabilere Lösungen müssen möglicherweise in Betracht ziehen, andere .NET -Bibliotheken zu verwenden oder die Dateisignaturanalyse selbst zu implementieren.
Das obige ist der detaillierte Inhalt vonWie kann ich den MIME -Typ einer Datei mithilfe von Dateisignaturen in .NET bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!