Главная > Программирование > РНР: настольная книга программиста
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

Глава 18. Загрузка файлов по HTTP

Для чего вообще нужна загрузка файлов по HTTP? На самом деле, это очень удобно как для администратора, так и для пользователя. Дело в том, что не всегда есть возможность загружать файлы на сервер по протоколу FTP (как это делается в большинстве случаев). А вот послать через браузер по протоколу HTTP крайне удобно.

Данная глава содержит темы:

• пример формы ввода;

• скрипты для обработки принимаемых данных;

• возможные трудности.

18.1. Пример формы ввода

Представим, что у вас есть свой сайт, где вы бы хотели реализовать, например, загрузку фотографий посетителей вашего ресурса. В данном случае очень удобно воспользоваться именно технологией загрузки файлов по HTTP. Схема проста: посетитель выбирает нужный файл на своем жестком диске и нажимает кнопку «Отправить». Судите сами, что проще: использовать FTP или такую технологию. Нам кажется, выбор очевиден. Приведем пример такой формы:

<form method="post" enctype="multipart/form-data" action="">

<input size=40 type=file name=myfilel><br>

<input type=submit value="Отправить">

</form>

Результат выполнения программы представлен на рис. 18.1.

Рис. 18.1. Полученная форма

После того как посетитель нажмет кнопку «Отправить», файл передастся на сервер, где и считывается скриптом. После этого файл будет переименован (получит наиболее удобное для вас имя) и определен в тот каталог, который задаст непосредственно Web-мастер сайта. Что делать с полученным файлом — это уже ваше дело.Теперь подробно разберемся, что это за форма ввода и какие у нее есть особенности. Обратим внимание на форматтега <form>. Это обычная форма, но существует несколько условий его использования:

1. Передача параметров скрипту должна осуществляться методом Post, а не методом Get, который используется по умолчанию в том случае, если метод передачи данных (параметр method) не был определен для формы Web-мастером.

2. Очень важно четко определить content-type, с которым данные и будут передаваться на сервер. Это делается с помощью параметра enctype, который должен иметь значение multipart/form-data.


ВНИМАНИЕ

Обычно значение enctype другое, но если в форме есть элемент ввода с типом file, нужно использовать именно этот тип данных.


Итак, мы уже знаем, как будет выглядеть наш тег <form>:

<form method="post" enctype="multipart/form-data" action="/cgi-bin/upload.cgi">

В вышеприведенном теге привычный для большинства форм параметр action, который определяет, куда будут переданы результаты заполнения формы. В нашем случае это скрипт upload.cgi.


ВНИМАНИЕ

Имя скрипта и место его размещения может быть абсолютно произвольным. В данном случае расположение скрипта указано исключительно для примера.


Следующий шаг — это размещение стандартных элементов для нашей формы.

1. Элемент выбора файла:

<input type=file name=myfile1>

Ключ type с параметром file указывает на то, что в результирующем HTML-документе, который увидит посетитель сервера, будет форма ввода имени файла, а рядом кнопка, при нажатии на которую браузер откроет интерфейс выбора файла на жестком диске пользователя.

Параметр name=myfile1 указывает на то, что двоичные данные, из которых состоит файл, будут переданы скрипту в параметре myfile1. Именно этот параметр мы будем использовать, когда будем рассматривать процедуру принятия файла скриптом:.

2. Кнопка.

Чтобы отобразить в HTML-документе кнопку, при нажатии на которую начнется передача данных из формы, нужно добавитьв HTML-код такую строку:

<input type=submit value="Отправить">

После всего этого необходимо закрыть форму тегом </forni>. Теперь наша форма готова к полноценному выполнению поставленной задачи.

<< Предыдущий параграф Следующий параграф >>
Оглавление