MDN wants to talk to developers like you: https://qsurvey.mozilla.com/s3/a3e7b5301fea

Content-Disposition

この翻訳は不完全です。英語から この記事を翻訳 してください。

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

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

電子メール向けの規格である MIME で定義された Content-Disposition ヘッダーには様々なパラメーターがありますが、HTTP フォームや POST で使えるのはその一部だけです。ヘッダーの値である form-data と、省略可能なディレクティブ name と filename のみが HTTP では使用可能です。

ヘッダーの種類

Response header (レスポンスボディに対して)
General header (マルチパートボディのサブパートに対して)

Forbidden header name いいえ

構文

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

この用法では、inline (デフォルト値。ウェブページの一部として、またはウェブページとして表示可能であることを示します)、もしくは 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
Is followed by a string containing the name of the HTML field in the form that the content of this subpart refer to. When dealing with multiple files in the same field (for example, the multiple attribute of an <input type=file> element, there can be several subparts with the same name.
A name with a value of '_charset_' indicates that the part is not an HTML field, but the default charset to use for parts without explicit charset information.
filename
送信された元のファイル名を含む文字列を指定します。このfilenameは常に任意であり、アプリケーションで使用する際は注意が必要です。例えばパス情報を取り除いたり、サーバーのファイルシステムに合わせてファイル名の変換を行ったりすべきです。This parameter provides mostly indicative information. Content-Disposition: attachment と組み合わせて使用すれば、「名前を付けて保存」ダイアログのデフォルトのファイル名になります。
filename*

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

A response triggering the "Save As" dialog:

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というファイル名で保存することを提案します(デフォルトでは)。

An example of HTML form, posted using the multipart/form-data format that makes use of the Content-Disposition header:

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 Returning Values from Forms: multipart/form-data
RFC 6266 Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)
RFC 2183 Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field

ブラウザ実装状況

機能 Chrome Edge Firefox Internet Explorer Opera Safari Servo
Content-Disposition(有り)(有り)(有り)(有り)(有り)(有り)(有り)
機能 Android Chrome for Android Edge Mobile Firefox for Android IE Mobile Opera Mobile Safari Mobile
Content-Disposition(有り)(有り)(有り)(有り)(有り)(有り)(有り)

Compatibility notes

  • Firefox 5 handles the Content-Disposition HTTP response header more effectively if both the filename and filename* parameters are provided; it looks through all provided names, using the filename* parameter if one is available, even if a filename parameter is included first. Previously, the first matching parameter would be used, thereby preventing a more appropriate name from being used. See バグ 588781.

関連情報

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

タグ: 
 このページの貢献者: unarist, yuji38kwmt
 最終更新者: unarist,