content type von dateien ermitteln
-
ich versuche gerade den conten type (bzw. mime type) von dateien zu ermitteln. ich dachte zunächst die glib methode "g_content_type_guess" könte mir das liefern was ich brauche. aber dort wird auch nur die dateiendung betrachtet, ich hätte es aber doch gerne etwas zuverlässiger, daher suche ich eine methode, die den content type anhand der "magic bytes" identifizieren kann.
-
Das klingt danach, als suchst du die libmagic.
-
danke für den hinweis. hab mir das mal eben angeschaut, aber es scheint nicht zu funktionieren. ich gehe davon auf, das ich irgendwo einen fehler gemacht habe, ich weiß nur nicht wo.
#include <stdio.h> #include <magic.h> int main(int argc, char *argv[]) { magic_t magic = magic_open(MAGIC_MIME | MAGIC_CHECK); const char *fileName = "/home/backus/test.pdf"; const char *contentType; if (magic == NULL) { fprintf(stderr, "error\n"); return 1; } contentType = magic_file(magic, fileName); if (contentType == NULL) { printf("unknown content type\n"); } else { printf("%s\n", contentType); } return 0; }
kompilieren ausführen und ausgabe:
$ gcc -lmagic mimetest.c -o mimetest $ ./mimetest unknown content type
die datei "/home/backus/test.pdf" existiert und ist lesbar.
-
Schau doch mal mit magic_error nach, warum er keinen Typ ermittelt hat.
-
anscheinend muß noch sowas wie eine mime definition geladen werden. die standard initialisierung erfolgt mit:
magic_load(magic, NULL);
-> funzt