2010-11-20 5 views
3

TL; DR: Die Frage ist:Bibliothek für plattformübergreifende Zuordnung von MIME-Typen Dateierweiterungen und umgekehrt

  • Kennen Sie eine Cross-Plattform-Bibliothek, die ich von C verwenden können ++ zur Karte MIME Typ (en) < -> Dateiendung (en)?

Meine Anwendung soll sowohl Bild- und Videodateien zu handhaben. Ich versuche, so plattformunabhängig wie möglich zu sein, also habe ich Qt4 als meine Hauptbibliothek gewählt. Das Phonon-Framework (für den Umgang mit Videodateien) und QImage (für den Umgang mit Bildern, natürlich) können beide berichten, welche Dateiformate sie unterstützen. Phonon gibt eine Liste der MIME-Typen zurück, die vom installierten Backend unterstützt werden, und QImage drückt die unterstützten Dateiformate mit einer Liste von Dateierweiterungen aus.

Die Anwendung sollte von einem QString fileName herausfinden, ob ein VideoObject oder ein ImageObject daraus erstellt werden soll. Meine Vorgehensweise besteht darin, eine map<QString, FuncPtr> zu erstellen, die die entsprechende Factory-Methode zum Erstellen des korrekten Objekts zurückgibt. Für die Zeichenfolge verwende ich momentan die Dateierweiterung, weil es sehr einfach ist, die Dateierweiterung vom Dateinamen abzuleiten. Aber jetzt habe ich keine elegante Möglichkeit, die unterstützten Videodateitypen zu registrieren, da ich nur ihren MIME-Typ kenne.

Wenn ich den MIME-Typen für den Schlüssel in meinen map<QString, FuncPtr> verwendet, würde ich mit dem Problem konfrontiert werden, wie man

  • a) Karte der Dateinamen in einen MIME-Typ (keine Ahnung, wie diese Plattform zu tun unabhängig und ausfahrbar)
  • b) Karte, um die Datei von QImage zu MIME-Typ zur Verfügung gestellt Erweiterungen

ich weiß, dass, nach meinen Recherchen bisher, schlagen viele Menschen die „Apache mime.types“ zu verwenden, , was mich daran hindern wird, neue Dateien zu unterstützen Matten (WebM, WebP, ...), wenn der Client die Backends aktualisiert.

Andere Vorschläge, die ich gefunden habe, ist "/etc/mime.types" auf Linux (ich könnte das tun) oder "Abfrage der Registrierung" auf Windows (keine Ahnung, wie das zu tun) zu scannen. Aber das scheint sehr auf diese beiden Plattformen beschränkt zu sein, was ist mit Mac OS X usw.

Zusätzlich zu der oben genannten Frage begrüße ich auch andere Vorschläge in irgendeiner Form oder Form. Vielleicht vermisse ich etwas, das offensichtlich tot ist.

Antwort

4

Wie Sie bereits auf Ihre Frage geschrieben haben, würde ich für eine Mimefile von Apache oder einige Linux-Distribution gehen und es mit Ihrer Anwendung versenden.

Persönlich denke ich, es hat keinen Sinn, eine "Bibliothek" dafür zu haben, "ständig auf dem neuesten Stand zu bleiben".

MIME ist in den letzten Jahren enorm gewachsen, aber in Wirklichkeit brauchen Sie nur 1% oder weniger aller definierten MIME-Typen. Menschen haben nicht alle Arten von Dateiformaten auf ihrem

Wenn Sie einige durchsuchen möchten, listet IANA die meisten der beliebten MIME-Typen auf.

TL; DR: Versenden Sie Ihre Anwendung mit einem meist vollständigen Mimefile von Apache oder einer Linux-Distribution und sorgen Sie sich nicht darum, sie "live" von allen Zielsystemen zu lesen.

Verwandte Themen