Ich möchte den MIME-Typ aus einem Dateinamen mit C abrufen.
Gibt es eine Möglichkeit, dies zu tun, ohne eine Textdatei zu verwenden, die MIME-Typen und Dateierweiterungen enthält (d. H. Die Apache-Datei mime.types
)?
Vielleicht gibt es eine Funktion, um den MIME-Typ mit dem Dateinamen zu erhalten? Ich benutze die Dateierweiterung lieber nicht, wenn ich nicht muss.
Wenn es einen Weg dazu gäbe, würde Apache seine mime.types
Datei nicht brauchen!
Der Tisch muss irgendwo sein. Entweder in einer separaten Datei, die von Ihrem Code analysiert wird, oder in Ihrer Software. Ersteres ist klarer die bessere Lösung ...
Es ist auch möglich, den MIME-Typ einer Datei zu erraten, indem der Inhalt der Datei untersucht wird, zB Header-Felder, Datenstrukturen usw. Dies ist der Ansatz des file(1)
-Programms und auch von Apache mod_mime_magic
. In beiden Fällen verwenden sie immer noch eine separate Textdatei, um die Suchregeln zu speichern, anstatt irgendwelche Details im Programm selbst fest programmiert zu haben.
Ich habe das gerade für ein Projekt implementiert, an dem ich arbeite. libmagic ist was du suchst. Auf RHEL / CentOS wird es von file-libs und file-devel bereitgestellt. Debian / Ubuntu scheint libmagic-dev zu sein.
Hier ist ein Beispielcode:
%Vor%Der folgende Code verwendet die Standard-Magic-Datenbank / usr / share / misc / magic. Sobald Sie die Dev-Pakete installiert haben, ist die libmagic man-Seite ziemlich hilfreich. Ich weiß, das ist eine alte Frage, aber ich habe sie auf meiner Suche nach derselben Antwort gefunden. Das war meine bevorzugte Lösung.
Siehe auch: how -zu-Dateierweiterungen-basierend-auf-Datei-Typ-auf-Linux-Unix
hinzufügenSie können den Quellcode des Tools "file" von hier herunterladen:
ftp://ftp.astron.com/pub/file/
Die Sache ist, dass es keine GPL-ähnliche Lizenz oder irgendeine andere dafür verwendet.
Tags und Links c unix mime-types