#5.12 php html Обработка загруженного файла на web-сервере

Доступ к загруженным файлам осуществляется по имени (в предыдущем примере задано имя userfile). Но при этом не используется описанные выше массивы $_GET, $_POST и $_REQUEST. Для обработки файлов предназначен специальный суперглобальный массив $_FILES. Данный массив является двухмерным, при этом первым индексом является имя поля для загрузки файла. Второй индекс массива принимает фиксированный набор значений, все его возможные варианты представлены ниже:

Элемент массива $_FILES Описание
$_FILES['userfile']['name' ] Имя исходного файла на компьютере пользователя.
$_FILES['userfile']['type'] MIME-тип файла. Например, для текстовых файлов это «text/plain», а для графических изображений может быть «image/gif».
$_FILES['userfile']['size'] Размер загруженного файла в байтах или $0$, если пользователь не выбрал файл для загрузки.
$_FILES['userfile']['tmp_name'] Имя временного файла, куда был загружен файл с компьютера пользователя или пустая строка, если пользователь не выбрал файл для загрузки.
$_FILES['userfile']['error'] Код ошибки, возникшей при загрузке файла. Значение 0 говорит об отсутствии ошибки. Элемент присутствует, начиная СРНР4.2.0.

Замечание

Массив $_FILES введен, начиная с РНР4.1.0. До этой версии использовался глобальный массив $HTTP_POST_FILES, который внутри функций требует обязательного объявления при помощи оператора global. Начиная с РНР6.0, этот массив не используется.

После успешной загрузки содержимое файла сохраняется в каталоге для временных файлов, а имя этого временного файла помещается в элемент массива $_FILES['userfile']['tmp_name'] (считаем, что поле для загрузки файла называется userfile). В следующем примере показано отображение загруженного файла на экране. Перед тем, как прочесть содержимое файла, его необходимо открыть при помощи функции fopen. Она имеет два параметра — имя файла и строку, которая задает режим открытия. В данном случае файл открывается для чтения, поэтому строка режима выглядит как «r»:

$handle = fopen($_FILES['userfile']['tmp_name'] , "r" ) ;

Пример. Отображение загруженного файла, phpfile.php

<HTML>
    <HEAD>
        <TITLE>
            Отображение загруженного файла
        </TITLE>
    </HEAD>
    <BODY>
        <CENTER>
            <H1>Отображение загруженного файла</H1>
            Вы загрузили файл следующего содержания:
            <BR> 
            <?php
                $handle = fopen($_FILES['userfile']['tmp_name'], 'r');
                while (!feof($handle)) {
                    $text = fgets($handle);
                    echo $text, "<BR>";
                }
                fclose($handle);
            ?>
        </CENTER>
    </BODY>
</HTML>



Рис. 1. Отображение загруженного файла