Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше
Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике
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 — встроенная функция последних версий РНР. Обратите внимание, что файл, который мы загружаем во временный каталог, доступен исключительно во время запроса на загрузку. После этого РНР уничтожит данный файл. А это значит, что после загрузки файла необходимо обязательно куда-нибудь переместить полученный файл, иначе вы его потеряете.