Dateityp mit C# ermitteln 👍 👎

Das ermitteln eines Dateityps nur durch Prüfen von Rohdaten kann aufwendig und fehlerträchtig sein; praktischerweise steht jedoch die native Funktion FindMimeFromData zur Verfügung, welche wir nutzen werden:
Wrapper für native Funktionalität bereitstellen
01020304050607080910111213141516171819202122232425
public static class DataUtility {    public static string GetMimeType(byte[] data) {        DataUtility.FindMimeFromData(0, null, data, (uint) data.Length, null, 0, out uint address, 0);
// Daten kopieren und Speicher freigeben IntPtr ptr = new IntPtr(address); string mimeType = Marshal.PtrToStringAuto(ptr); Marshal.FreeCoTaskMem(ptr);
return mimeType; }

[DllImport("urlmon")] private static extern uint FindMimeFromData( uint pBC, string pwzUrl, byte[] pBuffer, uint cbSize, string pwzMimeProposed, uint dwMimeFlags, out uint ppwzMimeOut, uint dwReserverd );}
Die Verwendung gestaltet sich nun sehr intuitiv:
Wrapper für native Funktionalität verwenden
0102
string mimeType = DataUtility.GetMimeType(File.ReadAllBytes("Avatar.gif")); // "image/gif"mimeType = DataUtility.GetMimeType(File.ReadAllBytes("Impressum.htm"));     // "text/html"
Beachtet jedoch bitte, dass auch diese Funktion u. U. nur begrenzt aussagekräftige Ergebnisse liefern kann und wie üblich verzichtet die Implementierung auf umfangreiche Fehlerbehandlung. Darüber hinaus bietet die native Funktion weitere Möglichkeiten, so beispielsweise das Übergeben eines Dateinamens bzw. einer URL.


Projektverweise

Kategorien / Archiv  |  Übersicht RSS-Feed

Schlagworte

Suche