Страница 1 из 3
десь будет рассмотрена загрузка файлов на сервер по протоколу 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[].
Напишем HTML форму для отправки файла на сервер. Содержание формы (файл upload.html):
color=#800000><html> <body> <FORM ENCTYPE="multipart/form-data" ACTION="myup.php" METHOD=POST> Выберете файл: <INPUT NAME="myfile" TYPE="file"> <INPUT TYPE="submit" VALUE="Загрузить"> </FORM> </body> </html>
После того как пользователь выбрал имя файла и нажал кнопку Загрузить, PHP помещает загружаемый файл во временную директорию указанную в параметре upload_tmp_dir файла php.ini. В этой директории этот файл будет храниться только во время запроса! После запроса PHP удалит этот временный файл. Поэтому загружаемый файл нужно куда-нибудь переместить (если он вам понадобиться в дальнейшем). Явно удалить временный файл можно функцией unlink(string filename). Так как в HTML форме мы написали <INPUT NAME="myfile" TYPE="file">, то при запросе в скрипте у нас будет глобальная переменная с именем $myfile. Здесь рассмотрим загрузку текстового файла и вывод его содержимого. Скрипт обработки: <?php // Загрузка файлов на сервер // Если register_globals=On
print("Имя файла на нашем сервере (во время запроса): ".$myfile."<br>"); print("Имя файла на компьютере пользователя: ".$myfile_name."<br>"); print("MIME-тип файла: ".$myfile_type."<br>"); print("Размер файла: ".$myfile_size."<br><br>");
// Получаем содержимое файла $fp = fopen($myfile,"r"); $content = fread($fp, filesize($myfile)); fclose($fp);
// Вывод содержимого файла print($content); ?> Пояснения: $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"] - код ошибки. |