Warum gibt die FindMimeFromData-Funktion von Urlmon.dll den MIME-Typ "application / octet-stream" für viele Dateitypen zurück?

8

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.

    
Alvis 28.01.2011, 21:14
quelle

2 Antworten

5

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.

    
Joshua 28.01.2011, 21:39
quelle
3

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.

    
Matthew Lock 22.11.2012 02:07
quelle

Tags und Links