#5.12 php html Обработка загруженного файла на web-сервере
Primary tabs
Доступ к загруженным файлам осуществляется по имени (в предыдущем примере задано имя 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>
- Log in to post comments
- 444 reads