здесь будет рассмотрена загрузка файлов на сервер по протоколу HTTP. Рассмотрим два варианта конфигурации PHP:
register_globals=Off - параметры передаваемые скрипту заносятся в массивы $_GET[], $_POST[], $_FILES[], $_COOKIE[], ... register_globals=On - все параметры передаваемые скрипту, автоматически становятся глобальными переменными и они также доступны через массивы $_GET[], $_POST[], $_FILES[].
Upload файлов при register_globals=On
В этом случае параметры передаваемые скрипту становятся глобальными переменными и кроме этого PHP также формирует массивы $_GET[], $_POST[], $_FILES[]. При такой конфигурации вы можете выбирать как вам получить доступ к передаваемым параметрам. Либо вы пользуетесь глобальными переменными, либо получаете доступ через массивы $_GET[], $_POST[], $_FILES[].
Здесь будем использовать глобальные переменные, а в следующем разделе будем использовать массив $_FILES[].
После того как пользователь выбрал имя файла и нажал кнопку Загрузить, PHP помещает загружаемый файл во временную директорию указанную в параметре upload_tmp_dir файла php.ini. В этой директории этот файл будет храниться только во время запроса! После запроса PHP удалит этот временный файл. Поэтому загружаемый файл нужно куда-нибудь переместить (если он вам понадобиться в дальнейшем). Явно удалить временный файл можно функцией unlink(string filename).
Так как в HTML форме мы написали <INPUT NAME="myfile" TYPE="file">, то при запросе в скрипте у нас будет глобальная переменная с именем $myfile.
Здесь рассмотрим загрузку текстового файла и вывод его содержимого.
Скрипт обработки:
// Загрузка файлов на сервер // Если register_globals=On
print("Имя файла на нашем сервере (во время запроса): ".$myfile." "); print("Имя файла на компьютере пользователя: ".$myfile_name." "); print("MIME-тип файла: ".$myfile_type." "); print("Размер файла: ".$myfile_size."
$myfile - имя временного файла, в котором находятся загруженные данные;
Когда пользователь отправляет форму, PHP автоматически определяет ещё несколько переменных:
$myfile_name - имя файла на компьютере компьютере пользователя;
$myfile_type - MIME-тип файла.
$myfile_size - размер файла в байтах.
При загрузке текстовых файлов переменная $myfile_type = "text/plain", при загрузке изображения gif переменная $myfile_type = "image/gif".
При register_globals=On можно пользоваться массивом $_FILES[]. Как им пользоваться мы рассмотрим ниже. Upload файлов при register_globals=Off
При register_globals=Off параметры передаваемые скрипту заносятся в массивы $_GET[], $_POST[], $_FILES[]. В нашем случае нас интересует массив $_FILES[]. В этом массиве храниться вся информация о всех загружаемых файлах. В нашем случае структура этого массива следующая:
$_FILES["myfile"]["tmp_name"] - Имя временного файла $_FILES["myfile"]["name"] - Имя файла на компьютере пользователя $_FILES["myfile"]["size"] - Размер файла в байтах $_FILES["myfile"]["type"] - MIME-тип файла $_FILES["myfile"]["error"] - код ошибки. CYBERGURU.RU