multipart/form-data
Для улучшения этой статьи желательно:
|
MIME | |
---|---|
Название | Multipart form-data |
Уровень (по модели OSI) | Прикладной |
Семейство | HTTP, Multipurpose Internet Mail Extensions |
Создан в | 1992 |
Порт/ID | 80/TCP |
Назначение протокола | Отправка данных с вложенными данными |
Спецификация | RFC 7578 |
Тип содержимого multipart/form-data — это составной тип содержимого, чаще всего использующийся для отправки HTML-форм с бинарными (не-ASCII) данными методом POST протокола HTTP. Указывается в поле заголовка Content-Type
(тип содержимого) и следует правилам для составных MIME-данных в соответствии с RFC 2045. Для форм, не имеющих больших бинарных (не-ASCII) данных, может использоваться тип содержимого application/x-www-form-urlencoded
.
Сообщение multipart/form-data
содержит несколько частей, по одной на каждый задействованный в форме элемент управления.
Типичный пример: страницы отправки электронных писем через webmail со вложенными файлами. При отправке такого письма браузер формирует сообщение типа multipart/form-data
, внедряя в него как отдельные части, введённые пользователем, тему, адрес получателя, собственно текст письма, так и вложенные файлы.
Сообщение типа multipart/form-data
состоит из нескольких частей, каждая из которых представляет содержимое некоторого элемента формы. Части отправляются обрабатывающему агенту в том же порядке, в котором соответствующие управляющие элементы представлены в потоке документа с формой. Каждая часть должна содержать:
- Заголовочное поле
Content-Disposition
, имеющее значениеform-data
. - Атрибут
name
определяет имя соответствующего управляющего элемента. Имена управляющих элементов, изначально закодированные с использованием наборов символов, отличных от ASCII, могут кодироваться с помощью метода, описанного в RFC 2047[1].
Пример
[править | править код]Этот раздел имеет чрезмерный объём или содержит маловажные подробности неэнциклопедичного характера. |
Пример отправки веб-формы с письмом со вложенными картинками:
POST /send-message.html HTTP/1.1 Host: webmail.example.com Referer: http://webmail.example.com/send-message.html User-Agent: BrowserForDummies/4.67b Content-Type: multipart/form-data; boundary=Asrf456BGe4h Content-Length: (суммарный объём, включая дочерние заголовки) Connection: keep-alive Keep-Alive: 300 (пустая строка) (отсутствующая преамбула) --Asrf456BGe4h Content-Disposition: form-data; name="DestAddress" (пустая строка) brutal-vasya@example.com --Asrf456BGe4h Content-Disposition: form-data; name="MessageTitle" (пустая строка) Я негодую --Asrf456BGe4h Content-Disposition: form-data; name="MessageText" (пустая строка) Привет, Василий! Твой ручной лев, которого ты оставил у меня на прошлой неделе, разодрал весь мой диван. Пожалуйста забери его скорее! Во вложении две фотки с последствиями. --Asrf456BGe4h Content-Disposition: form-data; name="AttachedFile1"; filename="horror-photo-1.jpg" Content-Type: image/jpeg (пустая строка) (двоичное содержимое первой фотографии) --Asrf456BGe4h Content-Disposition: form-data; name="AttachedFile2"; filename="horror-photo-2.jpg" Content-Type: image/jpeg (пустая строка) (двоичное содержимое второй фотографии) --Asrf456BGe4h-- (отсутствующий эпилог - пустая строка)
Следует отметить, что boundary
(граница) — это последовательность байтов, которая не должна встречаться внутри закодированного представления данных части. Обычно клиент (браузер) генерирует эту последовательность случайно или по специальному алгоритму.
См. также
[править | править код]Примечания
[править | править код]Ссылки
[править | править код]- RFC 7578 (англ.)
- Формы в документах HTML .
- Генерация HTTP запросов .
- Спецификация языка HTML, intuit.ru, 17. Лекция: Формы ISBN 978-5-94774-648-8
- HTML 4.01 Specification, Forms
Это заготовка статьи об информационных технологиях и вычислительной технике. Помогите Википедии, дополнив её. |