Content-Disposition
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
РобÑÑном HTTP-оÑвеÑе заголовок Content-Disposition ÑвлÑеÑÑÑ Ð¸Ð½Ð´Ð¸ÐºÐ°ÑоÑом Ñого, ÑÑо ожидаемÑй конÑÐµÐ½Ñ Ð¾ÑвеÑа бÑÐ´ÐµÑ Ð¾ÑобÑажаÑÑÑÑ Ð² бÑаÑзеÑе, как веб-ÑÑÑаниÑа или ÑаÑÑÑ Ð²ÐµÐ±-ÑÑÑаниÑÑ, или же как вложение, коÑоÑое заÑем Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑкаÑано и ÑоÑ
Ñанено локалÑно.
Ð ÑлÑÑае, еÑли Ñело HTTP-запÑоÑа Ñипа multipart/form-data, Ñо обÑий заголовок Content-Disposition иÑполÑзÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ из ÑоÑÑавнÑÑ
ÑаÑÑей multipart Ñела Ð´Ð»Ñ ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑÑ
Ñведений по полÑ, к коÑоÑÐ¾Ð¼Ñ Ð¿ÑименÑн заголовок. ÐÐ°Ð¶Ð´Ð°Ñ ÑаÑÑÑ Ð¾Ñделена Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð³ÑаниÑÑ (boundary), опÑеделÑнной в заголовке Content-Type. Content-Disposition, иÑполÑзÑемÑй непоÑÑедÑÑвенно Ð´Ð»Ñ Ð²Ñего Ñела HTTP-запÑоÑа, ни на ÑÑо не влиÑеÑ.
Ðаголовок Content-Disposition опÑеделÑн Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ ÑиÑокого конÑекÑÑа MIME-ÑообÑений Ð´Ð»Ñ e-mail, поÑÑÐ¾Ð¼Ñ Ð´Ð»Ñ HTTP-ÑоÑм и POST-запÑоÑов иÑполÑзÑÑÑÑÑ ÑолÑко неÑколÑко допÑÑÑимÑÑ
паÑамеÑÑов. РконÑекÑÑе HTTP можно иÑполÑзоваÑÑ ÑолÑко знаÑение form-data, а Ñакже опÑионалÑнÑе диÑекÑÐ¸Ð²Ñ name и filename.
| Тип заголовка |
Ðаголовок оÑвеÑа
(Ð´Ð»Ñ Ñела оÑвеÑа пÑоÑÑого Ñипа) ÐÑновной заголовок (Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑаÑÑи ÑоÑÑавного Ñела) |
|---|---|
| ÐапÑеÑÑнное Ð¸Ð¼Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° | Ð½ÐµÑ |
СинÑакÑиÑ
>Ðак заголовок оÑвеÑа Ñ Ð¾Ð±ÑÑнÑм Ñелом
ÐеÑвÑм паÑамеÑÑом в конÑекÑÑе HTTP должен бÑÑÑ Ð¸Ð»Ð¸ inline (ÑÑо знаÑение по ÑмолÑаниÑ, ÑказÑваÑÑее, ÑÑо конÑÐµÐ½Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ð¾ÑобÑажÑн внÑÑÑи веб-ÑÑÑаниÑÑ Ð¸Ð»Ð¸ как веб-ÑÑÑаниÑа) или attachment (ÑказÑÐ²Ð°ÐµÑ Ð½Ð° ÑкаÑиваемÑй конÑенÑ; болÑÑинÑÑво бÑаÑзеÑов оÑобÑажаÑÑ Ð´Ð¸Ð°Ð»Ð¾Ð³ "СоÑ
ÑаниÑÑ ÐºÐ°Ðº" Ñ Ð·Ð°Ñанее заполненнÑм именем Ñайла из паÑамеÑÑа filename, еÑли он задан).
Content-Disposition: inline Content-Disposition: attachment Content-Disposition: attachment; filename="filename.jpg"
Ðак заголовок в ÑоÑÑавном Ñеле
ÐеÑвÑм паÑамеÑÑом в конÑекÑÑе HTTP вÑегда ÑвлÑеÑÑÑ form-data; дополниÑелÑнÑе паÑамеÑÑÑ ÑегиÑÑÑонезавиÑимÑе и могÑÑ Ð¸Ð¼ÐµÑÑ Ð°ÑгÑменÑÑ, знаÑÐµÐ½Ð¸Ñ ÐºÐ¾ÑоÑÑÑ
ÑледÑÑÑ Ð¿Ð¾Ñле знака '=' и беÑÑÑÑÑ Ð² кавÑÑки. ÐеÑколÑко паÑамеÑÑов ÑазделÑÑÑÑÑ ÑеÑез ÑоÑÐºÑ Ñ Ð·Ð°Ð¿ÑÑой (';').
Content-Disposition: form-data Content-Disposition: form-data; name="fieldName" Content-Disposition: form-data; name="fieldName"; filename="filename.jpg"
ÐиÑекÑивÑ
name-
Ðа паÑамеÑÑом ÑледÑÐµÑ ÑÑÑока Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ HTML-Ð¿Ð¾Ð»Ñ Ð½Ð° ÑоÑме, к коÑоÑÐ¾Ð¼Ñ Ð¾ÑноÑиÑÑÑ Ð´Ð°Ð½Ð½Ð°Ñ ÑаÑÑÑ ÑоÑÑавного Ñела. ÐÑи ÑабоÑе Ñ Ð½ÐµÑколÑкими Ñайлами в Ñом же Ñамом поле (напÑимеÑ, аÑÑибÑÑÑ
multipleÑлеменÑа<input type=file>), могÑÑ Ð±ÑÑÑ Ð½ÐµÑколÑко ÑаÑÑей Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñм именем. ÐÑлиnameÐ¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение'_charset_', ÑказÑваÑÑее, ÑÑо Ð´Ð°Ð½Ð½Ð°Ñ ÑаÑÑÑ Ð½Ðµ ÑвлÑеÑÑÑ HTML-полем, Ñо она ÑодеÑÐ¶Ð¸Ñ ÐºÐ¾Ð´Ð¸ÑÐ¾Ð²ÐºÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð²ÑÐµÑ ÑаÑÑей, в коÑоÑÑÑ Ñвно кодиÑовка не Ñказана. filename-
Ðа паÑамеÑÑом Ñказана ÑÑÑока Ñ Ð¾ÑигиналÑнÑм именем пеÑедаваемого Ñайла. ÐÑо Ð¸Ð¼Ñ Ð¾Ð¿ÑионалÑно и не Ð¼Ð¾Ð¶ÐµÑ Ñлепо иÑполÑзоваÑÑÑÑ Ð¿Ñиложением: инÑоÑмаÑÐ¸Ñ Ð¾ пÑÑи должна бÑÑÑ Ð¾ÑиÑена и должно бÑÑÑ Ñделано пÑеобÑазование к Ñайловой ÑиÑÑеме ÑеÑвеÑа. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿ÑедоÑÑавлÑÐµÑ Ð² оÑновном ÑпÑавоÑнÑÑ Ð¸Ð½ÑоÑмаÑиÑ. Ðогда иÑполÑзÑеÑÑÑ Ð² комбинаÑии Ñ
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 (ÑÑо поведение по ÑмолÑаниÑ).
ÐÑÐ¸Ð¼ÐµÑ HTML-ÑоÑмÑ, пеÑеданной ÑеÑез POST Ñ Ð¸ÑполÑзованием ÑоÑмаÑа multipart/form-data, коÑоÑÑй иÑполÑзÑÐµÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Content-Disposition:
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 |
СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами
ÐамеÑÐ°Ð½Ð¸Ñ Ð¿Ð¾ ÑовмеÑÑимоÑÑи
- Firefox 5 обÑабаÑÑваеÑ
Content-Disposition заголовкаHTTP-оÑвеÑа response более ÑÑÑекÑивно, еÑли пÑиÑÑÑÑÑвÑÑÑ Ð¾Ð±Ð° паÑамеÑÑаfilenameиfilename*; он пÑоÑмаÑÑÐ¸Ð²Ð°ÐµÑ ÑнаÑала вÑе пÑедоÑÑавленнÑе именаfilename*, даже еÑÑÑ Ð²Ð½Ð°Ñале идÑÑfilename. Ранее иÑполÑзовалоÑÑ Ð¿ÐµÑвое найденное имÑ. See Firefox bug 588781.
СмоÑÑиÑе Ñакже
- HTML-ÑоÑмÑ
Content-TypeопÑеделÑÐµÑ Ð³ÑаниÑÑ Ð´Ð»Ñ ÑаÑÑей ÑоÑÑавного Ñела.- ÐнÑеÑÑейÑ
FormDataиÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾Ð±ÑабоÑки даннÑÑ ÑоÑм Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² APIXMLHttpRequest.