Для загрузки пользовательских файлов на сервер используется специальный элемент управления,позволяющий указать путь к загружаемому файлу(при помощи кнопки Обзор).Элемент управления имеет следующий синтаксис:
1 |
<input type="file"/> |
Помимо атрибута type,элемент управления допускает указание атрибутов name и size.Простая форма для отправки файла на сервер демонстрируется ниже:
HTML-форма для загрузки файлов на сервер - index.html
1 2 3 4 5 6 7 |
<h2><b> Форма для загрузки файлов </b></h2> <form action="upload.php" enctype="multipart/form-data" method="post"> <input name="filename" type="file"/> <input type="submit" value="Загрузить"/> </form> |
Атрибут enctype формы определяет вид кодировки,которую браузер применяет к параметрам формы.Для того чтобы отправка файлов на сервер действовала,атрибуту enctype необходимо присвоить значение multipart/form-data.По умолчанию этот атрибут имеет значение application/x-www-form-urlencoded.
После того как получен HTTP-запрос,содержимое загруженного файла записывается во временный файл,который создается в каталоге сервера,заданном по умолчанию для временных файлов,если другой каталог не задан в файле php.ini(директива upload_tmp_dir).
Характеристики загруженного файла доступны через двумерный суперглобальный массив $_FILES.При этом переменная со значением этого массива может иметь следующий вид:
- $_FILES['filename']['name](содержит исходное имя файла на клиентской машине);
- $_FILES['filename']['size'](содержит размер загруженного файла в байтах);
- $_FILES['filename']['type'](содержит MIME-типа файла);
- $_FILES['filename']['tmp_name'](содержит имя временного файла,в который сохраняется загруженный файл).
Проверить успешность загрузки файла на сервере можно при помощи специальной функции is_upload_file(),которая принимает в качестве единственного параметра имя файла ($_FILES['filename']['name']) и возвращает TRUE в случае успешной загрузки и FALSE в случае неудачи.
Ниже приведен скрипт upload.php,который загружает файл на сервер и копирует его из временного каталога в каталог temp/.
1 2 3 4 5 6 7 8 9 10 11 |
<?php if(copy($_FILES['filename']['tmp_name'], "temp/".$_FILES['filename']['name'])) { echo "Файл успешно загружен"; } else { echo "Ошибка загрузки файла"; } ?> |
После выполнения этого скрипта выбранный для загрузки файл будет помещен в подкаталог temp каталога,в котором расположен скрипт,а браузер выдаст фразу "Файл успешно загружен".
Следующий скрипт позволяет вывести характеристики загруженного файла.Для этого необходимо модифицировать скрипт так,как представлено ниже:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<strong>Характеристики файла</strong> <?php if(copy($_FILES['filename']['tmp_name'], "temp/".$_FILES['filename']['name'])) { echo "Файл успешно загружен <"; // Далее выводится информации о файле echo "Характеристики файла: "; echo "Имя файла: "; echo $_FILES['filename']['name']; echo " Размер файла: "; echo $_FILES['filename']['size']; echo " Каталог для загрузки: "; echo $_FILES['filename']['tmp_name']; echo " Тип файла: "; echo $_FILES['filename']['type']; } else { echo "Ошибка загрузки файла"; } ?> |
В некоторых случаях требуется ограничить размер файла,который может быть загружен на сервер.К примеру,чтобы зазрешить загрузку на сервер файлов размером не более 4Мбайт,нужно скрипт так,как это представлено ниже:
Ограничение размера загружаемого файла
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php if($_FILES['filename']['size'] > 4*1024*1024) { exit "Размер файла превышает три мегабайта"; } if(copy(_FILES['filename']['tmp_name'], "temp/".$_FILES['filename']['name'])) { echo "Файл успешно загружен "; } else { echo "Ошибка загрузки файла"; } ?> |
Максимальный размер загружаемого файла можно также задать при помощи директивы upload_max_filesize,значение которой по умолчанию равно 2 Мбайт:
if($_FILES['filename']['size'] > upload_max_filesize)
Значение директивы upload_max_filesize можно изменить в конфигурационном файле php.ini.