Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Кодирование набора данных формы



Перед передачей на сервер набор данных формы кодируется в соответствии со значением атрибута ENCTYPE элемента FORM, который определяет тип содержимого, соответствующий пересылаемым данным. Клиентские браузеры должны поддерживать перечисленные в следующем разделе типы содержимого, в противном случае их поведение в процессе обработки формы будет непредсказуемо.

Tuп содержимого "application/x-www-form-urlencoded"

Этот тип содержимого используется по умолчанию. Набор данных формы, кодируемый согласно данному типу содержимого, составляется следующим образом.

• Из формы извлекаются имена и значения элементов управления, после чего символы пробелов заменяются символами +. Символы, не являющиеся буквами или цифрами, заменяются кодом %НН, где за знаком процента следуют шестнадцатеричные цифры, представляющие код ASCII этого символа. Разрывы строк представляются парами CRLF (т.е. значением %OD%OA).

• Пары имя/значение элементов управления перечисляются согласно их позиции в тексте документа. Имя отделяется от значения с помощью символа =, а пары имя/значение отделяются друг от друга символом &.

Рассмотрим, например, следующую форму.

Подтверждение этой формы с введенным именем подписчика Ivan Petrov и адресом электронной почты [email protected] приведет к отправке такого набора данных формы:

firstname=lvan&lastname=Petrov&postal-

[email protected]&subscribe=on

Tun содержимого "multipart/form-data"

Тип содержимого "application/x-www-form-urlencoded" неэффективен для отправки большого количества двоичных данных или текста, содержащего символы, не входящие в набор ASCII. Для отправки набора данных формы, содержащего файлы или данные с символами, не входящими в набор ASCII, или двоичные данные, больше подходит тип содержимого "multipart/form-data".

Сообщение с типом содержимого "multipart/form-data" состоит из нескольких частей, каждая их которых представляет успешный элемент управления. Эти части пересылаются в программу обработки формы в том порядке, в котором соответствующие им элементы управления представлены в документе HTML. Каждая часть может содержать необязательный заголовок "Content-Type", значение которого по умолчанию равно "text/plain". Кроме этого, каждая часть должна содержать следующие компоненты.

• Заголовок "Content-Disposition", имеющий значение "form-data".

• Атрибут имени соответствующего элемента управления.

Например, для элемента управления с именем "control-name" соответствующая часть набора данных формы может выглядеть так:

Content-Disposition: form-data; name="control-name"

Если в наборе данных формы передаются данные, хранимые в файле, для этих данных должен быть определен тип содержимого (например, "application/octet-stream"). Если с помощью одного элемента формы было выбрано несколько файлов, они должны пересылаться с указанием типа содержимого "multipart/mixed".

В следующем примере показан результат кодирования согласно типу содержимого "multipart/form-data". Предположим, у нас имеется следующая форма.

Если пользователь введет в текстовое поле слово " Ivanov " и выберет текстовый файл " content.txt ", то после подтверждения формы браузер отправляет следующий набор данных формы.

Здесь использован обязательный параметр boundary, задающий строку, разделяющую части передаваемых данных. Если пользователь выбрал второй файл с изображением " logo.gif ", то клиентский браузер отправляет следующие части набора данных формы.

Итак, мы уже знаем, как следует подготавливать набор данных формы, предназначенный для передачи программе-сценарию для их обработки. Рассмотрим, как это происходит.





Дата публикования: 2014-11-04; Прочитано: 250 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...