Лекция: Кодирование набора данных формы

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

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

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

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

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

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

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

firstname=lvan&lastname=Petrov&postal-

address=petrov@email.com&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", то клиентский браузер отправляет следующие части набора данных формы.

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

еще рефераты
Еще работы по информатике