2010-11-20 5 views
3

TL; DRは:質問です:私はMIMEをマップするためにC++から使用することができるクロスプラットフォームのライブラリーの拡張子をファイルにMIMEタイプのクロスプラットフォーム対応のためのライブラリおよびその逆

  • 知っていますかタイプ< - >ファイル拡張子?

私のアプリケーションは、同様に、画像やビデオファイルを扱うことになっています。私はできるだけプラットフォームにとらわれないようにしようとするので、Qt4をメインライブラリとして使用することにしました。 Phononのフレームワーク(ビデオファイルを扱うため)とQImage(画像を扱うために、明らかに)はどちらもサポートするファイル形式を報告できます。 Phononは、インストールされたバックエンドによってサポートされているMIMEタイプのリストを返します。また、QImageは、サポートされているファイルフォーマットをファイル拡張子のリストで表します。

アプリケーションはQString fileNameから、VideoObjectまたはImageObjectを作成するかどうかを調べる必要があります。私のアプローチは、正しいオブジェクトを作成するための適切なファクトリメソッドを返すmap<QString, FuncPtr>を作成することです。私は現在ファイル拡張子を使用している文字列に対して、ファイル名からファイル拡張子を推測するのは非常に簡単です。しかし、私はMIMEタイプだけを知っているので、サポートされているビデオファイルタイプを登録するためのエレガントな方法はありません。

私は私のmap<QString, FuncPtr>にキーのためのMIMEタイプを使用した場合、I a)はそのプラットフォームを行うにはどのようにMIMEタイプ(無手掛かりにファイル名をマップする方法に

  • 問題に直面するだろう独立および伸張可能)
  • B)

MIMEタイプにQImageのが提供するファイルの拡張子をマップし、私は今までの私の研究によると、多くの人が「Apacheのmime.typesファイル」を使用することをお勧め、ということを知っています、私は新しいファイルをサポートしてくれませんマット(WebM、WebP、...)が含まれます。

Linuxで「/etc/mime.types」をスキャンするか、Windowsで「レジストリを照会する」という方法がありません。しかし、これは2つのプラットフォーム、Mac OS Xなどについては非常に限られているようです。

上記の質問に加えて、私はどのような形や形であれ他の提案も歓迎します。おそらく私は何か脳の死者を明らかにしていません。

答えて

4

あなたの質問にすでに書いているように、私はApacheやLinuxディストリビューションからmimefileを探して、アプリケーションと共に出荷します。

個人的には、「永続的に最新の状態を保つ」ための「図書館」を持つことには意味がないと思います。

過去数年間、MIMEは大きく成長しましたが、実際には定義されているすべてのMIMEタイプの1%以下しか必要としません。人々はすべての種類のファイル形式を持っていません

一部を参照したい場合は、IANAのよく使われるMIMEタイプのほとんどがリストされています。

TL; DR:ApacheまたはLinuxディストリビューションのほとんどがmimefileで出荷し、すべてのターゲットシステムから「ライブ」を読む心配はありません。

関連する問題