Загрузка файлов на сервер

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.

Здесь рассмотрим загрузку текстового файла и вывод его содержимого.

Скрипт обработки:

// Загрузка файлов на сервер
//
Если register_globals=On

    print("Имя файла на
нашем сервере (во время запроса):
".$myfile."
");
    print("Имя файла на
компьютере пользователя:
".$myfile_name."
");
    print("MIME-тип файла:
".$myfile_type."
");
    print("Размер файла:
".$myfile_size."

");

    //
Получаем содержимое файла
    $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"] - код ошибки.




Рекомендуем почитать

 

Добавить комментарий


Ваше имя:


Комментарий:


Введите: Картинка