MIMEタイプとは何ですか
MIME タイプの略語は (MultiPurpose Internet Mail Extensions) で、インターネット メディア タイプを表します。MIME は単純な文字列構成を使用します。元々は電子メールの添付ファイルのタイプを識別するために使用されていました。content-type 属性は HTML ファイルで使用できます。ファイルの種類を記述するインターネット標準を表します。異種システムやネットワーク間で情報を転送する際に、必ず情報の形式を宣言するために使用される方式です。
MIME タイプには、ビデオ、画像、テキスト、オーディオ、アプリケーション、その他のデータを含めることができます。
.exe
一般に、ファイル システムでは、実行可能ファイル、.txt
プレーン テキスト ファイル、.png
png エンコードされた画像、.mp4
mp4 ビデオなどのファイル タイプを示すために拡張子を使用します。この方法はスタンドアロン システムではうまく機能しますが、ネットワーク送信では適切な方法ではありません。まず第一に、拡張機能には権威がなく、異なるシステム間ではあいまいさが存在します。次に、拡張子の慣例として略語が使用されますが、これでは意味を正確に表現できません。
ネットワーク上でのコンテンツ タイプ宣言の正確な記述と配信を容易にするために、複数の当事者組織がメディア タイプの表現方法と登録手順を開発しました(メディア タイプの仕様と登録手順: rfc6838 )。この方式はもともと電子メール (MIME) に使用されていたため、MIME タイプとも呼ばれます。
通常の状況では、type 属性を設定する必要はなく、ブラウザはコンテンツ形式を自動的に認識します。ブラウザによってサポートされる MIME タイプは異なります。ブラウザが特定の MIME タイプをサポートしていない場合は、プラグインのコンテンツがサポートされていないことを示すプロンプトが表示されます。
MIMEの役割
これにより、クライアント ソフトウェアがさまざまな種類のデータを区別できるようになります。たとえば、Web ブラウザは MIME タイプを使用して、ファイルが GIF 画像であるか印刷可能な PostScript ファイルであるかを判断します。
Web サーバーは MIME を使用して送信するデータの種類を記述し、Web クライアントは MIME を使用して受信するデータの種類を記述します。
標準形状:T1/T2
Media Type の型宣言は、メインクラス/サブクラスの 2 つの部分で構成されます。登録されているカテゴリは 10 個、よく使用されるカテゴリはtext
、image
、、、の6 個です。サブカテゴリが多すぎて、合計で 2,000 以上あります。audio
video
application
multipart
複合型
multipart
カテゴリは複合タイプを指します。後続のデータが異なるメディア タイプの複数の情報ブロックで構成されており、各ブロックが個別のメディア タイプ宣言を持つことができることを示します。
たとえば、添付ファイルをアップロードする場合、Web ではmultipart/form-data
各添付ファイルのアップロードに使用できるメディア タイプが異なるのが一般的です。multipart
別の例として、さまざまな種類の添付ファイルを電子メールで送信できます。
構造接尾語
サブタイプに関して注意すべき点の 1 つは、サブクラスを宣言するときに構造記述接尾辞 (構造化構文名の接尾辞、 rfc6838 4.2.8 )を追加できることです。例: application/soap+xml
W3C Web サービス メッセージを表し、そのメッセージは xml 構文を使用します。xmlapplication/calendar+xml
構文を使用して伝送される icalendar メッセージを表します。jsonapplication/calendar+json
構文を使用して伝送される icalendar メッセージを表します。
ワイルドカード
メディア タイプは、一意のタイプだけを意味するわけではないことに注意してください。メディア タイプは、ネットワーク ネゴシエーション中にワイルドカードの受け渡しをサポートします。*/*
任意のタイプを表し、text/*
テキスト カテゴリを表します。したがって、MIME タイプの文字列比較をプログラム内で単純に実行することはできません。ワイルドカードのシナリオを考慮する必要があります。
パラメータ
実際にメディア タイプを渡すときは、メディア タイプの後にパラメータを追加できます大类/子类;参数1=值1;……;参数n=值n
。例えば:text/plain;charset=utf-8;bom=no
タイプを登録する
IANA (Internet Assigned Numbers Authority) は、メディア タイプの登録管理を担当します。
サブタイプ管理に関して、IANA には現在 4 つのシーケンス (ツリー) があります: 1. 標準ツリー、2. ベンダー ツリー、3. 個人使用 (個人またはバニティ ツリー)、4. 未登録 (未登録 x. ツリー)。
例:
text/plain
application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/prs.xsf+xml
application/x.abc
無作為に
注: 歴史的には、未登録のサブタイプが x- で始まる名前で表される場合がありましたが、これは後に変更されましたx.
。application/x-www-form-urlencoded
フォーマルタイプです。
まとめ
これを見ると、HTTP ヘッダーの content-type を処理するときに、単純に文字の同一性に基づいて判断することはできず、文字列を単純に主要なサブカテゴリ/
に 完全な MIME タイプ分析では、主要カテゴリ、サブカテゴリ、構造接尾辞、ワイルドカード、パラメータを正確に識別できなければなりません。org.springframework.util.MimeTypeUtils.parseMimeTypeInternal(String)またはjavax.activation.MimeType.MimeType(String) を参照できます。