Erhalte MIME-Typ aus dem Dateinamen in C

8

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.

    
petsson 08.01.2009, 08:52
quelle

6 Antworten

5

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.

    
Alnitak 08.01.2009, 08:56
quelle
8

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.

    
Brian Lindblom 10.12.2013 17:30
quelle
6

Soweit ich weiß, gibt der Unix-Befehl file die Mime-Zeichenfolge mit der Option -i :

aus %Vor%     
lImbus 08.01.2009 10:02
quelle
0
0

Sie 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.

    
Eldelshell 08.01.2009 10:43
quelle
0

Wenn Sie einen Webservice verwenden möchten, habe ich dies als Teil meines Mimetyps & lt; - & gt; Symboldienst

Ссылка

Zum Beispiel:

Ссылка

Es läuft auf appengine, also sollte es hohe Verfügbarkeit haben.

    
Paul Tarjan 19.08.2009 08:19
quelle

Tags und Links