コンテンツ タイプについて学ぶには、まずそれが何であるか、そして何に使用されるかを知る必要があります。
HTTP プロトコル (RFC2616) は、リクエスト/レスポンス モデルを採用しています。クライアントはサーバーにリクエストを送信します。リクエスト ヘッダーには、リクエスト メソッド、URI、プロトコル バージョン、およびリクエスト修飾子、クライアント情報、コンテンツを含む MIME のようなメッセージ構造が含まれます。サーバーは、メッセージ プロトコル バージョン、成功またはエラー コード、サーバー情報、エンティティ メタ情報、および可能なエンティティ コンテンツを含むステータス ラインで応答します。
通常、HTTP メッセージは、開始行、1 つ以上のヘッダー フィールド、ヘッダー フィールドのみで終わる空白行、およびオプションのメッセージ本文で構成されます。 HTTP ヘッダー フィールドには、一般ヘッダー、要求ヘッダー、応答ヘッダー、エンティティ ヘッダーの 4 つの部分が含まれます。各ヘッダー フィールドは、ドメイン名、コロン (:)、ドメイン値の 3 つの部分で構成されます。ドメイン名は大文字と小文字を区別しません。ドメイン値の前に任意の数のスペースを追加できます。ヘッダー フィールドは複数行に拡張できます。各行の先頭には、少なくとも 1 つのスペースまたはタブ文字を使用します。
要求メッセージと応答メッセージの両方にエンティティ情報を含めることができます。エンティティ情報は通常、エンティティ ヘッダー フィールドとエンティティで構成されます。エンティティ ヘッダー フィールドには、エンティティに関する元の情報が含まれます。エンティティ ヘッダーには、Allow、Content-Base、Content-Encoding、Content-Language、Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、Etag、Expires、Last-Modified、および extension-header が含まれます。 Content-Type は返信メッセージの中で非常に重要な内容であり、後続のドキュメントの MIME タイプを示します。 Content-Type: [type]/[subtype]; パラメータ。たとえば、最も一般的なものは text/html です。これは、返されるコンテンツがテキスト タイプであり、テキストが HTML 形式であることを意味します。原則として、ブラウザは Content-Type に基づいて返されたメッセージ本文をどのように表示するかを決定します。
型は次の形式をとる
テキスト: 標準化された方法でテキスト情報を表すために使用されます。テキスト メッセージは、複数の文字セットや複数の形式で表現できます。
マルチパート: メッセージ本文の複数の部分を結合してメッセージを形成するために使用されます。これらの部分は異なるタイプのデータにすることができます。
アプリケーション: アプリケーション データまたはバイナリ データを転送するために使用されます。
メッセージ: 電子メール メッセージをパッケージ化するために使用されます。
画像: 静止画像データを送信するために使用されます。
オーディオ: オーディオまたは音声データを送信するために使用されます。
ビデオ: 動画像データを送信するために使用されます。オーディオと一緒に編集できるビデオデータ形式です。
サブタイプは、タイプの詳細な形式を指定するために使用されます。コンテンツ タイプ/サブタイプのペアのセットと、それに関連付けられたパラメータは、時間の経過とともに増加します。これらの値が秩序正しくオープンな方法で開発されることを保証するために、MIME はこれらの値を管理するための中央登録メカニズムとして Internet Assigned Numbers Authority (IANA) を使用します。
パラメータは追加情報を指定するために使用できますが、text/plain や text/htm などのテキスト エンコードの charset パラメータを指定するために使用されることが多いです。 MIME はタイプに基づいてデフォルトのサブタイプを定義します。クライアントがメッセージのサブタイプを判別できない場合、メッセージは処理のデフォルトのサブタイプとして扱われます。テキストのデフォルトは text/plain、アプリケーションのデフォルトは application/octet-stream、マルチパートはデフォルトで multipart/mixed として扱われます。 IE6 ブラウザの場合、Content-Type の型が実際のメッセージ本文の型と一致しない場合、コンテンツ内の型に基づいて実際の型を分析します。Content-Type に何が記述されているかに関係なく、JPG や GIF などの一般的な画像形式を正しく識別できます。 Content-Type で指定されたタイプがブラウザが直接開くことができるタイプである場合、ブラウザは直接そのコンテンツを開いて表示します。他のアプリケーションに関連付けられたタイプである場合は、レジストリでこのタイプの登録状態を調べる必要があります。確認せずに直接開くことが許可されている場合は、関連付けられたアプリケーションを直接呼び出してファイルを開きます。ただし、直接開くことが許可されていない場合は、開くかどうかを尋ねます。どのアプリケーションにも関連付けられていないタイプの場合、IE ブラウザではそのファイルを開く方法がわからないため、IE6 では XML として開こうとします。
ファイルをダウンロードしたい場合は、http ヘッダーに追加できます。
fprintf(ファイル、"Content-Disposition:attachment; ファイル名=\"%s\" \r\n", ファイル名);
テスト後、Web ページで最初に開かれた html、pdf、gif などのファイルは正常にダウンロードできます。
'hqx' => 'application/mac-binhex40', 'cpt' => 'application/mac-compactpro', 'doc' => 'application/msword', 'bin' => 'アプリケーション/オクテットストリーム'、 'dms' => 'アプリケーション/オクテットストリーム'、 'lha' => 'アプリケーション/オクテットストリーム'、 'lzh' => 'アプリケーション/オクテットストリーム'、 'exe' => 'アプリケーション/オクテットストリーム'、 'クラス' => 'アプリケーション/オクテットストリーム'、 'so' => 'アプリケーション/オクテットストリーム'、 'dll' => 'アプリケーション/オクテットストリーム', 'oda' => 'アプリケーション/oda'、 'pdf' => 'アプリケーション/pdf'、 'ai' => 'アプリケーション/ポストスクリプト'、 'eps' => 'アプリケーション/ポストスクリプト'、 'ps' => 'アプリケーション/ポストスクリプト'、 'smi' => 'アプリケーション/smil'、 'smil' => 'アプリケーション/smil'、 'mif' => 'application/vnd.mif', 'xls' => 'application/vnd.ms-excel', 'ppt' => 'application/vnd.ms-powerpoint', 'wbxml' => 'application/vnd.wap.wbxml', 'wmlc' => 'application/vnd.wap.wmlc', 'wmlsc' => 'application/vnd.wap.wmlscriptc', 'bcpio' => 'アプリケーション/x-bcpio'、 'vcd' => 'application/x-cdlink'、 'pgn' => 'application/x-chess-pgn', 'cpio' => 'アプリケーション/x-cpio'、 'csh' => 'application/x-csh'、 'dcr' => 'アプリケーション/x-director'、 'dir' => 'application/x-director', 'dxr' => 'アプリケーション/x-director'、 'dvi' => 'application/x-dvi'、 'spl' => 'application/x-futuresplash', 'gtar' => 'application/x-gtar'、 'hdf' => 'application/x-hdf'、 'js' => 'application/x-javascript', 'skp' => 'アプリケーション/x-koan'、 'skd' => 'アプリケーション/x-koan'、 'skt' => 'application/x-koan'、 'skm' => 'アプリケーション/x-koan'、 'ラテックス' => 'アプリケーション/x-ラテックス'、 'nc' => 'application/x-netcdf'、 'cdf' => 'application/x-netcdf', 'sh' => 'application/x-sh'、 'shar' => 'application/x-shar'、 'swf' => 'application/x-shockwave-flash'、 'sit' => 'application/x-stuffit'、 'sv4cpio' => 'application/x-sv4cpio'、 'sv4crc' => 'application/x-sv4crc'、 'tar' => 'application/x-tar'、 'tcl' => 'application/x-tcl'、 'tex' => 'application/x-tex', 'texinfo' => 'application/x-texinfo', 'texi' => 'application/x-texinfo', 't' => 'アプリケーション/x-troff'、 'tr' => 'application/x-troff'、 'roff' => 'application/x-troff'、 'man' => 'application/x-troff-man'、 'me' => 'application/x-troff-me'、 'ms' => 'application/x-troff-ms'、 'ustar' => 'application/x-ustar'、 'src' => 'application/x-wais-source', 'xhtml' => 'application/xhtml+xml'、 'xht' => 'application/xhtml+xml', 'zip' => 'アプリケーション/zip'、 'au' => 'オーディオ/基本'、 'snd' => 'オーディオ/基本'、 'mid' => 'オーディオ/MIDI'、 'midi' => 'オーディオ/midi'、 'kar' => 'オーディオ/MIDI'、 'mpga' => 'オーディオ/mpeg'、 'mp2' => 'オーディオ/mpeg'、 'mp3' => 'オーディオ/mpeg'、 'aif' => 'audio/x-aiff'、 'aiff' => 'audio/x-aiff'、 'aifc' => 'audio/x-aiff'、 'm3u' => 'audio/x-mpegurl'、 'ram' => 'audio/x-pn-realaudio'、 'rm' => 'audio/x-pn-realaudio'、 'rpm' => 'audio/x-pn-realaudio-plugin'、 'ra' => 'オーディオ/x-realaudio'、 'wav' => 'audio/x-wav'、 'pdb' => 'chemical/x-pdb'、 'xyz' => '化学物質/x-xyz'、 'bmp' => '画像/bmp'、 'gif' => '画像/gif'、 'ief' => '画像/ief'、 'jpeg' => '画像/jpeg'、 'jpg' => 'image/jpeg'、 'jpe' => 'image/jpeg'、 'png' => 'image/png'、 'tiff' => 'image/tiff'、 'tif' => 'image/tiff'、 'djvu' => 'image/vnd.djvu'、 'djv' => 'image/vnd.djvu'、 'wbmp' => 'image/vnd.wap.wbmp'、 'ras' => 'image/x-cmu-raster'、 'pnm' => 'image/x-portable-anymap', 'pbm' => 'image/x-portable-bitmap', 'pgm' => 'image/x-portable-graymap', 'ppm' => 'image/x-portable-pixmap'、 'rgb' => 'image/x-rgb'、 'xbm' => 'image/x-xbitmap', 'xpm' => 'image/x-xpixmap', 'xwd' => 'image/x-xwindowdump'、 'igs' => 'モデル/iges'、 'iges' => 'モデル/iges'、 'msh' => 'モデル/メッシュ', 'メッシュ' => 'モデル/メッシュ'、 'サイロ' => 'モデル/メッシュ'、 'wrl' => 'モデル/vrml', 'vrml' => 'モデル/vrml', 'css' => 'テキスト/css'、 'html' => 'text/html'、 'htm' => 'text/html', 'asc' => 'text/plain'、 'txt' => 'テキスト/プレーン'、 'rtx' => 'テキスト/リッチテキスト', 'rtf' => 'テキスト/rtf'、 'sgml' => 'text/sgml'、 'sgm' => 'text/sgml'、 'tsv' => 'テキスト/タブ区切り値', 'wml' => 'text/vnd.wap.wml', 'wmls' => 'text/vnd.wap.wmlscript', 'etx' => 'text/x-setext'、 'xsl' => 'text/xml'、 'xml' => 'text/xml'、 'mpeg' => 'ビデオ/mpeg'、 'mpg' => 'ビデオ/mpeg'、 'mpe' => 'ビデオ/mpeg'、 'qt' => 'ビデオ/クイックタイム'、 'mov' => 'ビデオ/クイックタイム'、 'mxu' => 'video/vnd.mpegurl'、 'avi' => 'video/x-msvideo'、 'ムービー' => 'ビデオ/x-sgi-ムービー'、 'ice' => 'x-conference/x-cooltalk'、 |