
ユーザーのコンピューターがファイルの拡張子 (.pdf、.mp3、.docx、.dotx など) に基づいてファイルの処理方法を決定できる場合、Web サーバーと電子メール アプリでも MIME タイプを指定する必要があるのはなぜでしょうか。
デフォルトとは異なる方法でファイルを配信する場合 (例: .py または .html ファイルをプレーン テキストとして表示する)、またはファイル拡張子がクライアント コンピューターに登録されていない場合は、これが便利だと思いますが、ほとんどの場合、新しいファイル形式 (たとえば .foobaz) を作成し、これらのファイルを Web や電子メールで共有できるようにしたい場合、クライアントがファイル拡張子を認識するだけで十分ではないでしょうか。
答え1
MIME タイプは、ファイルの使用目的を明確に指定します。ファイル拡張子は、コンテンツのヒントに過ぎません。どちらも間違っている可能性があります。DOC は、さまざまな内部ファイル形式を持つ多数のテキスト エディターで使用されています。
拡張子を偽装することは、ファイルの種類を偽装するために広く使用されています。これは、さまざまな種類のマルウェアに使用できます。また、セキュリティ バグにつながる可能性もあります。myfile.txt がテキスト ファイルとしてセキュリティ検証され、その後、コンテンツ検査によって実行可能ファイルとして実行されると、感染したマシンになる可能性があります。
Unix では、実行可能ビットを使用して、実行可能なファイルを示します。スクリプトは、どのインタープリタがスクリプトを実行するかを示す bang パスで開始できます。file コマンドを使用すると、拡張子の有無にかかわらず、ファイルの種類をかなり確実に判別できます。
拡張子を使用してファイルの使用を識別すると、あいまいさが生じる可能性があります。myfile.exe、myfile.com、myfile.bat、myfile.cmd がある場合、コマンド myfile を実行するとどれが実行されます。
答え2
あなたはそれを間違った方向から見ています。
クライアントがファイルの処理方法を認識するには、ファイルには MIME タイプが必要です。
あなたの質問も逆のはずです:
MIME タイプによってファイルの種類を識別できる場合、なぜファイル拡張子が必要なのでしょうか?
その答えはおそらく、名前を見てファイルの種類を人間が識別しやすくするためでしょう。Windows では他の理由もあるかもしれません。
答え3
これは Windows の世界でのみ発生します。UNIX の世界では、ファイルに拡張子は必要なく、MIME タイプによって識別されます。
答え4
小規模で特注の(カスタム設計された)アプリケーションでは、ファイル拡張子に関してかなり自由な傾向があります。これにより、複数の種類のファイルを表すために使用されるファイル拡張子が発生する可能性があります。
ファイル拡張子が特定のファイルの種類に対応するという保証はないため、受信者はファイルの種類を識別できず、ファイルを開くための正しいプログラムを入手できない可能性があります。
MIME タイプに加えて、マジック ナンバーなど、ファイルを識別する他のシステムもあります。つまり、ファイル拡張子は必要ありません。ファイル拡張子は、ユーザーが変更することもできますが、その場合、ファイルを開くことができなくなり、サポートに問い合わせる可能性が高くなります。