Warum gibt die Funktion FindMimeFromData von Urlmon.dll den MIME-Typ "application / octet-stream" für viele Dateitypen zurück, während die Überprüfung des MIME-Typs nach Dateierweiterung (z. B. gegen die Windows-Registrierung) einen genaueren Typ zurückgibt?
Zum Beispiel ist mp3 ein "application / octet-stream" anstelle von "audio / mp3".
Grundsätzlich möchte ich eine hochgeladene Datei mit falscher Erweiterung überprüfen. Diese Methode scheint für viele Bilddateien, XML usw. zu funktionieren.
Die Frage ähnelt dieses" , aber die zur Verfügung gestellte Lösung eignet sich nicht für die Validierung hochgeladener Dateien, da unterschiedliche / mehrdeutige MIME-Typen zurückgegeben werden.
in der Dokumentation zu FindMimeFromData Lesen mich führen zu MIME Typ-Erkennung in Internet Explorer . Nach dieser Information ist es hart codiert 26 verschiedene MIME-Typen finden , die in der heutigen Welt ziemlich klein ist. "audio / mp3" gehört nicht dazu.
FindMimeFromData enthält hartcodierte Tests für (derzeit 26) separaten MIME-Typ (siehe Bekannte MIME-Typen). Das bedeutet, dass wenn eine gegebene Pufferdaten in dem Format von einer dieser MIME-Typen enthält, wird ein Test in FindMimeFromData existiert, der (durch das Abtasten durch den Pufferinhalt) ausgelegt ist, die entsprechenden MIME-Typ zu erkennen. Ein MIME-Typ ist bekannt, wenn es sich um einen dieser N MIME-Typen handelt. Ein MIME-Typ ist zweideutig, wenn es "text / plain", "application / octet-stream", eine leere Zeichenfolge oder null (dh, der Server sie bietet nicht).
Leider scheint FindMimeFromData
für die Bestimmung moderner MIME-Typen nicht sehr nützlich zu sein.
Hier gibt es eine schöne Lösung: Ссылка die versucht den Dateityp aus der Registry zu ermitteln (nach Dateiendung?) wenn FindMimeFromData "application / octet-stream" "text / plain" oder gar nichts zurückgibt.
Hier ist eine .NET-Dateityp-Erkennungsbibliothek Ссылка , die jedoch im Moment nur eine kleine Anzahl von Dateien erkennt.
Tags und Links .net c# mime-types mime