私は現在、興味深いものより多くの問題を抱えています。特定のファイルのMIMEタイプを検出しています。 これは、ファイルに存在する情報のみを使用してMIMEタイプを推測しようとしていることを意味します。ファイルとは、名前と内容を持つ構造体を意味します。MIMEタイプの検出が正しく行われました
は、ここで私は、この問題を知っているソリューションです:
- は、ファイル名に応じて、ファイルタイプを推測しようとしています。たとえば、ファイル名が
foo.txt
の場合、MIMEタイプはtext/plain
- とすることができます。コンテンツを使用するタイプ、特に通常はある種の魔法のコードを含む最初のバイトを特定しようとします。たとえば、ファイルが
0xCAFEBABE
のオクテットで始まる場合、mime-typeはapplication/x-java-class
と見なすことができます。
この問題に対する2つのアプローチには、それぞれ利点と欠点があります。
最初の解決方法は非常に効率的ですが、ファイル名が正しく、拡張子があるものとします。 LICENSE
またはREADME
という名前のファイルのMIMEタイプを検出するにはどうすればよいですか?
2番目の手法はもう少し複雑で、実際にデータを読み取る必要があります。マジックコードを含むすべてのファイルでうまく動作しますが、他のファイルではうまく動作しません。 MS-DOS EXEファイル(マジックコードとしてMZ
で始まる)とという文字で始まる実際のtext/plain
ファイルの違いを示す方法がいくつかあります。他のファイルタイプ(txt
対csv
; html
とvs xml
との比較を考えた場合、同様の問題が多数発生します。これは、xhtml
です)。
ここに本当の質問があります: ファイルのMIMEタイプを効率的かつ確実に検出するにはどうすればよいですか?
いくつかのサイドノート:
- 私は図書館のとてもたくさんを知っては、仕事をすることそこに存在します。私は図書館に興味がありません。私は手を汚すことに興味があります。
- 特定の言語はありません。私は、特定の実装ではなく、一般的なアルゴリズムに興味があります。あなたがアルゴリズムではなく、ツールを求めているよう
もちろん、この情報をデータとともに保存するのが最善の方法です。 OS Xは[UTIs](http://en.wikipedia.org/wiki/Uniform_Type_Identifier)を使ってこれを行います。しかし、それはここで助けにはならない、と私は思いますか? – You