4

私は MIME タイプに慣れていませんが、これは奇妙です。通常、テキスト ファイルは text/plain MIME と見なされていましたが、fileinfo の実装後、このタイプのファイルは "text/x-pascal" と見なされるようになりました。ユーザーがアップロードできるようにする前に、正しい MIME タイプが設定されていることを確認する必要があるため、少し心配です。

fileinfo によって解釈される「一般的な」マイムをすべて教えてくれるチート シートはありますか?


Sinan は、より一般的な MIME をすべてリストしたリンクを提供しました。このリストを見ると、.txt ファイルは text/plain mime であることがわかりますが、私の場合、plain-jane テキスト ファイルは text/pascal として解釈されます。

4

4 に答える 4

4

fileinfo「最良の推測」です。ファイルの一部のみを分析して、ファイルの種類を特定しようとするため、簡単にだまされる可能性があります。おそらく、ファイルは Pascal コメントまたは or などのキーワードで始まりProjectますUnit

于 2010-02-27T02:29:10.237 に答える
3

Fileinfo は、ファイルの拡張子を使用してファイルの MIME タイプを特定するのではなく、(引用) :

このモジュールの関数は、ファイル内の特定の位置で特定のマジック バイト シーケンスを探すことによって、ファイルのコンテンツ タイプとエンコーディングを推測しようとします。

ファイルの名前とその拡張子は、ユーザーによって提供されるという考えです(特に、ファイルがユーザーによってアップロードされているあなたのような場合)。ファイル自体の内容。


おそらく解決策は、fileinfo によって返される MIME タイプ全体をチェックするのではなく、その最初の部分のみを使用することです。少なくとも場合によっては?

たとえば、text/*およびimage/*ファミリーにあるすべての MIME タイプを受け入れ、 のようなものはすべて拒否できapplication/*ますapplication/pdf
(ほんの一例ですが、要点がわかります)

于 2010-02-27T09:16:31.573 に答える
3

少なくともバージョン 5.03 の時点で、' file ' コマンドは、'program' または 'record' という単語が含まれているという単純な理由で、プレーン テキスト ファイルを Pascal ソース ファイルと誤認する場合があることを発見しました。少なくとも、ソース (src/names.h) を調べると、そのように見えます。php fileinfo コマンドは同じ「マジック」エンジンを使用していると思われるため、これが問題の原因であると思われます。ファイル メーリング リストに承認された場合、メンテナにこの問題を通知します。

【追記】 質問したのですが、あまり返事がありませんでした。この問題をもう少し詳しく調査した結果、テキスト形式を特定することは、一般的に非常に困難であることがわかりました。ファイルから 'text/*' MIME タイプが返された場合は、結果を無視して、リソースが単なる 'text/plain' であると想定することを検討してください。

于 2010-05-10T16:40:19.290 に答える
2

一般的な MIME タイプと対応する拡張子のリストを示す表があります。 ここ

于 2010-02-27T01:40:23.913 に答える