Heim >Backend-Entwicklung >C++ >Wie bestme ich den MIME -Typ einer Datei mithilfe seiner Signatur in .NET?
.NET Framework bereitgestellt eine Methode der Datei -basierten Signatur anstatt die MIME -Typ -Erkennungsdatei zu erweitern. Dies ist besonders nützlich, wenn falsche oder fehlende Dateien verarbeitet werden.
Um den MIME -Typ zu bestimmen, können Sie die exportierte
-Funktion verwenden. Diese Funktion empfängt den Bytepuffer der Dateisignatur und gibt ihren MIME -Typ zurück. urlmon.dll
FindMimeFromData
Folgendes ist ein Beispiel dafür, wie diese Funktion verwendet wird, um diese Funktion zu verwenden:
Diese Methode liefert eine zuverlässige Methode, die ihren MIME -Typ nur auf der Signatur der Datei basierend auf der Erweiterung erhalten kann. Die Codeverbesserung ist, dass es genauer ist, die Anzahl der gelesenen Bytes zu verarbeiten, um das Problem des potenziellen Arrays zu vermeiden, das den Rand überquert.
<code class="language-csharp">using System.Runtime.InteropServices; ... [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 ); public static string GetMimeFromFile(string filename) { if (!File.Exists(filename)) throw new FileNotFoundException($"{filename} not found"); byte[] buffer = new byte[256]; using (FileStream fs = new FileStream(filename, FileMode.Open)) { int bytesRead = fs.Read(buffer, 0, 256); // Read at most 256 bytes if (bytesRead < 256) { Array.Resize(ref buffer, bytesRead); // Resize buffer if less than 256 bytes were read } } try { uint mimetype; FindMimeFromData(0, null, buffer, (uint)buffer.Length, 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>
Das obige ist der detaillierte Inhalt vonWie bestme ich den MIME -Typ einer Datei mithilfe seiner Signatur in .NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!