Servus
ejomi hat geschrieben:Dabei bin ich über einen kleinen Programmfehler gestolpert:
Will man die Funktion "GetFileType" mit der Flag "bReturnSignatureIfUnknown" steuern, kommt es zu einem Fehler weil in der betreffenen Bedinung ein nicht existierender Array mit Namen "aTmp" abgerufen wird. Hier muss der Name in "aHexArray" geändert werden, wenn man z.B. bei unbekannten MIME-Typen die HEX-Signatur gezeigt bekommen möchte.
Danke für den Hinweis - ich habe die Angewohnheit, beim ersten Runterschreiben des Codes kurze Benenner wie sTmp, aTmp, nTmp etc. zu verwenden und diese erst am Ende in aussagekräftige Namen zu ändern. Das Array ist mir dabei offensichtlich durch die Lappen gegangen.
Der Ausschnitt ist jetzt auch im ursprünglichen Code angepasst.
ejomi hat geschrieben:Dateien ohne Header (wie z.B. reine Textdateien) lassen sich mit dieser Methode aber grundsätzlich nicht ermitteln.
Das ist ein leider weitverbreitetes Problem (daher auch das ">>Possible<<" in der Signatur-Liste), durch Überprüfung auf Vorhandensein eines ByteOrderMark (BOM) kann man eventuell noch das eine oder andere Textfile identifizieren, aber generell hat man es hier mit einem Thema zu tun, über das sich schon etliche Menschen den Kopf zerbrochen haben. Firefox zum Beispiel verwendet dafür meines Wissens nach eine eigene Heuristik.
Die meisten Lösungen sehen allerdings so aus, dass bei unbekannter Signatur eben die Dateiendung herangezogen wird (genaugenommen machen die meisten Programme dies als erstes). Das zu tun, um zumindest eine gute Vermutung über den MIME-Typ anzustellen, ist ohne großen Aufwand umsetzbar.