通常の HTTP レスポンスにおける Content-Disposition レスポンスヘッダーは、コンテンツがブラウザでインラインで表示されることを求められているか、つまり、Webページとして表示するか、Webページの一部として表示するか、ダウンロードしてローカルに保存する添付ファイルとするかを示します。

本文が multipart/form-data である場合、Content-Disposition ヘッダーは、マルチパートを構成する各サブパートに付与され、そのフィールドに関する情報を示します。サブパートはContent-Type ヘッダーで定義された boundary によって区切られます。マルチパートの本文体に付与した場合、Content-Disposition は何の意味も持ちません。

Content-Disposition ヘッダーはメールにおける MIME メッセージのより広い用途で定義されたものですが、HTTP のフォームと POST リクエストに利用可能な引数は一部だけです。ヘッダーの値である form-data と、省略可能なディレクティブ namefilename のみが HTTP の用途で使用することができます。

ヘッダー種別 レスポンスヘッダー (本文の場合)
一般ヘッダー (マルチパート本文の一部の場合)
禁止ヘッダー名 いいえ

構文

メインボディに適用するレスポンスヘッダーとして

この用法では、inline (デフォルト値。Web ページの一部として、またはWebページとして表示可能であることを示します)、もしくは attachment (ダウンロードすべきであることを示します。多くのブラウザは filename パラメータの値を使い、「名前を付けて保存」ダイアログを表示します) を最初のパラメータとして指定します。

Content-Disposition: inline
Content-Disposition: attachment
Content-Disposition: attachment; filename="filename.jpg"

マルチパート本文で使うヘッダーとして

この用法では最初の引数は常に form-data です。追加のパラメータは大文字小文字を区別せず、'=' 記号に続けてクォートされた文字列で引数を指定します。複数のパラメータはセミコロン (';') で区切ります。

Content-Disposition: form-data
Content-Disposition: form-data; name="fieldName"
Content-Disposition: form-data; name="fieldName"; filename="filename.jpg"

ディレクティブ

name
このサブパートの内容が参照する形式で HTML フィールドの名前を含む文字列が続きます。 同じフィールドで複数のファイルを扱う場合 (たとえば、 <input type=file> 要素の multiple 属性)、同じ名前のサブパートが複数存在する可能性があります。
'_charset_' の値を伴う name は、その部分が HTML フィールドではなく、明示的な文字セット情報なしで部分に使用するデフォルトの文字セットであることを示します。
filename
送信された元のファイル名を含む文字列を指定します。この filename は常に任意であり、アプリケーションで使用する際は注意が必要です。例えばパス情報を取り除いたり、サーバーのファイルシステムに合わせてファイル名の変換を行ったりすべきです。This parameter provides mostly indicative information. Content-Disposition: attachment と組み合わせて使用すれば、「名前を付けて保存」ダイアログのデフォルトのファイル名になります。
filename*

filename パラメータと filename* パラメータの唯一の違いは、filename* では RFC 5987 に基づきエンコードした値を使用できることです。一つのヘッダに filename と filename* の両方が存在している場合、filename* は filename より優先されます。

[名前を付けて保存] ダイアログを起動するレスポンス

200 OK
Content-Type: text/html; charset=utf-8
Content-Disposition: attachment; filename="cool.html"
Content-Length: 22

<HTML>Save me!</HTML>

このサンプル HTML ファイルは、ブラウザに表示されるのではなく、通常のダウンロードとして保存されます。ほとんどのブラウザは、cool.html というファイル名で保存することを提案します (デフォルトでは)。

Content-Disposition ヘッダーを利用する multipart/form-data フォーマットを使用して投稿された HTML フォームの例:

POST /test.html HTTP/1.1
Host: example.org
Content-Type: multipart/form-data;boundary="boundary"

--boundary
Content-Disposition: form-data; name="field1"

value1
--boundary
Content-Disposition: form-data; name="field2"; filename="example.txt"

value2
--boundary--

仕様書

仕様書 タイトル
RFC 7578 フォームから値を返します: multipart/form-data
RFC 6266 Hypertext Transfer Protocol (HTTP) での Content-Disposition ヘッダーフィールドの使用
RFC 2183 インターネットメッセージにおけるプレゼンテーション情報の伝達: Content-Disposition ヘッダーフィールド

ブラウザの対応

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
Content-DispositionChrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 ありIE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 あり

凡例

完全対応  
完全対応

互換性に関する注意

  • Firefox 5 は、filenamefilename* の両方のパラメータが指定されている場合、Content-Disposition HTTP レスポンスヘッダをより効果的に処理します。たとえ filename パラメータが最初に含まれていても、利用可能ならば filename* パラメータを使用して、提供されたすべての名前を調べます。 以前は、最初に一致したパラメータが使用されていたため、より適切な名前が使用されませんでした。 バグ 588781 をご覧ください。

あわせて参照

ドキュメントのタグと貢献者

タグ: 
このページの貢献者: silverskyvicto, mdnwebdocs-bot, mfuji09, unarist, yuji38kwmt
最終更新者: silverskyvicto,