Листинг 2. Загрузка файлов на сервер — upload.php

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

Одной из распространенных задач при работе с файлами является их загрузка на удаленный сервер. Для загрузки файлов на сервер понадобится HTML-форма index.html и скрипт upload.php для ее обработки. Простая форма для отправки файла на сервер может выглядеть так, как показано в листинге 1.

Листинг 1. HTML-форма для загрузки файлов на сервер — (файл) index.html)

<html>

<head> <title Загрузка файлов на сервер </title> </head>

<body> <h2><b> Форма для загрузки файлов </b></h2>

<form action="upload.php" method="post" enctype="multipart/form-data">

<input type="file" name="filename"><br>

<input type="submit" value="3arpyзить"><br>

</form> </body>

</html>

Атрибут entype формы определяет вид кодировки, которую браузер применяет к параметрам формы. Для того чтобы отправка файлов на сервер действовала, атрибуту entype необходимо присвоить значение

Quot;multipart/form-data".

По умолчанию этот атрибут имеет значение "application/x-www-form-urlencoded".

Если все сделано правильно, форма для отправки файлов на сервер должна выглядеть так, как это показано на рис. 1.

После того как получен HTTP-запрос, содержимое загруженного файла записывается во временный файл, который создается в каталоге сервера, заданном по умолчанию для временных файлов, если другой каталог не задан в файле php.ini (директивой upload_tmp_dir).

Характеристики загруженного файла доступны через двумерный массив $_files.

При этом переменная со значениями этого массива может иметь следующий вид:

□ $_FILES["filename"] ["name"] — содержит исходное имя файла на клиентской машине;

□ $_files["filename"] ["size"]— содержит размер загруженного файла в байтах;

□ $_files [ "filename" ] [ "type" ] — содержит тип файла;

$_FILES["filename"] ["tmp_name"] — содержит ИМЯ временного файла,в который сохраняется загруженный файл.

В листинге 2 приведен скрипт upload.php, который загружает файл на сервер и копирует его из временного каталога в каталог temp.

Листинг 2. Загрузка файлов на сервер — upload.php

<html> <head>

<title> Результат загрузки файла </title> </head> <body> <?php

if(copy($_FILES["filename"]["tmp_name"], "temp/".$_FILES["filename"]["name"])) {

echo("Файл успешно загружен"); }

else {

echo("Ошибка загрузки файла"); }

</body> </html>

После выполнения этого скрипта выбранный для загрузки файл будет помещен в подкаталог temp каталога, в котором расположен скрипт, а браузер выдаст фразу "Файл успешно загружен".

(Замечание)

Проверить успешность загрузки файла на сервер можно при помощи специальной функции is_uploaded_file(), которая принимает в качестве единственного параметра имя файла ($_FILES["filename"] ["name"]) и возвращает true в случае успешной загрузки и false в случае неудачи.

Скрипт из листинга 3 позволяет вывести характеристики загруженного файла. Для этого необходимо модифицировать скрипт в листинге 2.