Обработка загруженного файла

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

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

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

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

Далее используется while, который повторяется до тех пор, пока не будет достигнут конец файла (этот факт определяется при помощи функции feof).

code: #php
while (feof($handle))...

Для чтения очередной строки файла используется функция fgets:

code: #php
$text = fgets($handle); 

Наконец,после завершения вывода файла его следует закрыть при помощи функции fclose. Хотя после заврешения выполнения любого скрипта все принадлежащие ему ресурсы, в том числе и файлы, автоматически освобождаются, рекомендуется закрывать файлы явно.

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

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

Результат отображения загруженного файла показан на рисунке:

результат выполнения примера
Книга: PHP в примерах. Купить книгу
Автор: Стивен Хольцнер. Переводчик: С. Банников
Поделиться:

Похожие статьи: