Heim > Backend-Entwicklung > C++ > Wie kann ich den MIME -Typ einer Datei mithilfe von Dateisignaturen in .NET bestimmen?

Wie kann ich den MIME -Typ einer Datei mithilfe von Dateisignaturen in .NET bestimmen?

Susan Sarandon
Freigeben: 2025-01-31 14:56:13
Original
470 Leute haben es durchsucht

How Can I Determine a File's MIME Type Using File Signatures in .NET?

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:
  1. Definieren Sie die FindMimimFromData -Funktion:
    <code class="language-csharp">using System.Runtime.InteropServices;</code>
    Nach dem Login kopieren
  2. 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>
    Nach dem Login kopieren
  3. Verwenden Sie die Funktion GetMimeFromFile, um den MIME -Typ zu erhalten:

    <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>
    Nach dem Login kopieren
  4. 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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage