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

18.2. Скрипты для обработки принимаемых данных

Итак, посетитель сайта выбрал файл на своем диске и нажал на кнопку «Отправить». Теперь наша задача — обработать данные, переданные формой, и сделать что-нибудь с передаваемым файлом. Для этого воспользуемся скриптом на РНР.

В РНР загрузка файлов осуществляется гораздо проще, нежели при помощи скриптов, написанных на другом языке, например на Perl. Все дело в том, что в РНР есть встроенный модуль, который и отвечает за загрузку. Конечно, можно поступить и по аналогии с Perl: открывать входной поток данных, вычислять имя, получать и писать данные в двоичном режиме и т. д. Однако гораздо удобнее воспользоваться встроенным механизмом.

Как вы помните, в созданной нами форме переменная, которая передает имя файла, названа myfile1. Если в качестве аргумента к параметру action в форме задан PHP-скрипт, то в самом скрипте после передачи в него методом Post данных из формы будут предопределены следующие переменные:

$myfile1 — имя (полное, с путем) временного файла, под которым были сохранены загруженные на сервер данные;

$myfile1_name — имя оригинального файла, под которым данные были у пользователя на

$myfile1_size — размер файла, который был загружен на сервер; $myfile1_type — MIME-тип файла пользователя.

Имея такие переменные, можно написать скрипт, обрабатывающий загрузку файла:

<? move_uploaded_file ($userfile, "/download/$userfile_name"); ?>

Если вы укажете такой скрипт, состоящий только из одной строчки, в action, он примет файл, поместит его во временный каталог, «вычислит» оригинальное имя этого файла и скопирует в каталог /download/.

Дополнительно можно показать сообщение о том, что файл был успешно загружен, а также проконтролировать, с тем ли расширением был загружен файл, имеет ли он тот content-type, не превышает ли он максимально допустимый размер и т. д.

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

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