Введение в программирование на PHP5

Доступ к файлам и папкам

Показывать лекцию целиком

Открытие файлов

PHP предоставляет доступ к файлам в операционных системах Windows и Unix для чтения, записи или добавления содержимого. Этот раздел описывает, как использовать PHP для открытия файлов в системах Windows.

PHP содержит функции fopen() и fclose() для работы с файлами. Обе функции определяются ниже.

fopen(имя_файла, режим) - функция используется для открытия файла. Для функции требуется задать имя файла и режим работы. Она возвращает указатель на файл, который содержит информацию о файле и используется в качестве ссылки.

fclose(указатель_ресурса) – функция используется для закрытия файла. Для функции требуется указатель файла, созданный при открытии файла с помощью функции fopen(). Возвращает TRUE при успешной работе или FALSE при отказе.

Имя файла является полным путем доступа к файлу, который требуется создать или открыть. Этот путь доступа может быть относительным путем доступа к файлу: "/Documents and Settings/Administrator/PHP/myfile.txt" или абсолютным путем доступа к файлу: "E:/MyFiles/PHP/myfile.txt". Для каждого определенного каталога необходимо иметь подходящие права NTFS для создания, модификации или удаления файлов.

Режим может быть одним из следующих.

Режимы, используемые в fopen()

Режим Применение
r Открывает существующий файл с целью чтения из него данных. Указатель файла помещается в начале файла
r+ Открывает существующий файл с целью чтения или записи данных. Указатель файла помещается в начале файла
w Открывает файл для записи. Если файл не существует, то он создается. Если файл существует, то указатель файла помещается в начале файла и функция удаляет все существующее содержимое файла
w+ Открывает файл для чтения и записи. Если файл не существует, то он создается. Если файл существует, то указатель файла помещается в начале файла и функция удаляет все существующее содержимое файла
a Открывает файл для записи. Если файл не существует, то он создается. Если файл существует, то указатель файла помещается в конце файла
a+ Открывает файл для чтения и записи. Если файл не существует, то он создается. Если файл существует, то указатель файла помещается в конце файла

Следующий пример показывает, как открыть файл для чтения:

fileprocess.php 

<?php

$filename = "C:/Documents and Settings/Administrator/MyFiles/myfile.txt";

$newfile = fopen($filename, "w+");

//код для чтения или записи данных в файл располагается здесь 

fclose($newfile);

?>

Первый шаг состоит в создании переменной для хранения всего пути доступа к файлу, который будет открыт:

$filename = "C:/Documents and Settings/Administrators/MyFiles/myfile.txt";

Путь доступа к текстовому файлу myfile.txt хранится в переменной с именем filename. Затем создается указатель файла с именем $newfile и применяется с функцией fopen() для открытия файла, указанного в предыдущем разделе. Указатель файла является ссылочной переменной PHP, используемой для ссылки на только что открытый файл:

$newfile = fopen($filename, "w+");

Указатель файла будет использован позже для чтения и записи содержимого в открытый файл.

В некоторых ситуациях функция fopen() не сможет успешно открыть файл в результате неверного пути доступа к файлу, полномочий безопасности или других непредвиденных проблем. В связи с этим рекомендуется использовать специальную функцию PHP для аккуратной обработки таких ошибок. Эти функции можно применять в сочетании с оператором управления ошибками PHP "@", рассмотренного в разделе 8-2 для завершения сценария, подавления создаваемых PHP сообщений об ошибках, и вывода более понятного пользователю сообщения. Функции управления ошибками PHP описаны ниже:

exit(сообщение_об_ошибке) – завершает текущий сценарий и выводит сообщение об ошибке, передаваемое в функцию.

die(сообщение_об_ошибке) – алиас функции exit().

Следующий сценарий демонстрирует использование функций управления ошибками:

fileprocess.php 

<?php

$filename = "C:/Documents and Settings/Administrator/MyFiles/
myfile.txt";

$newfile = @fopen($filename, "w+") or exit("Невозможно открыть или создать файл");

//код для чтения или записи данных в файл размещается здесь 

fclose($newfile);

?>

Если файл невозможно открыть, функция exit() выводит сообщение " Невозможно открыть или создать файл" и сценарий завершается.

Если файл открывается успешно, то содержимое можно читать из файла, записывать в файл, или добавлять к файлу в зависимости от используемого в функции fopen() режима. Подробнее эти действия будут рассмотрены в следующих разделах. После завершения обработки всего файла применяется функция fclose() для закрытия открытого файла.

Чтение файлов

Этот раздел описывает, как использовать PHP для чтения содержимого файлов в системах Windows.

Для чтения файлов в PHP имеются функции fread() и filesize(). Они определяются ниже.

fread(указатель_ресурса, длина) – функция, используемая для чтения содержимого файла. Читает указанное количество байтов "длина" из файла "указатель_ресурса". Чтение останавливается, когда будет прочитано заданное количество байтов ("длина") или будет достигнут маркер EOF ( end of file ). Функция требует два параметра – указатель файла, который создается, когда файл открывается с помощью функции fopen(), и размер, который определяет, какая часть содержимого будет считана.

fgetcsv(указатель_ресурса, длина, ограничитель) – функция, используемая для чтения содержимого файла и анализа данных для создания массива. Данные разделяются параметром-ограничителем, задаваемым в функции.

filesize(имя_файла) – возвращает размер файла. Если возникает ошибка, функция возвращает значение false.

Следующий пример иллюстрирует, как прочитать все содержимое файла:

fileread.php 

<?php

$filename = "C:/Documents and Settings/Administrator/MyFiles/myfile.txt";

$newfile = @fopen($filename, "r") or exit("Невозможно открыть файл!");

$file_contents = @fread($newfile, filesize($filename)) 
  or exit("Невозможно прочитать содержимое файла!");

fclose($newfile);

?>

Первый шаг состоит в создании переменной для хранения полного пути доступа к файлу, который будет открыт для чтения:

$filename = "C:/Documents and Settings/Administrators/MyFiles/myfile.txt";

Путь доступа к текстовому файлу myfile.txt хранится в переменной с именем filename. Затем создается указатель файла с именем $newfile и используется с функцией fopen() для открытия файла, указанного в предыдущем разделе. Указатель файла применяется для ссылки на только что открытый файл:

$newfile = fopen($filename, "r");

Указатель файла является переменной PHP, которая содержит ссылку на открытый файл. Он будет задействован позже с функцией fread() для чтения содержимого из открытого файла.

Затем создается переменная с именем $file_contents и используется для хранения содержимого текстового файла myfile.txt. Первый параметр функции fread() указывает на имя файла, содержимое которого будет прочитано. Второй параметр определяет длину файла. Если длина файла неизвестна, можно воспользоваться специальной функцией PHP с именем filesize(), которая определяет длину файла. Она требует один параметр – имя или путь доступа файла, который читается в данный момент.

$file_contents = fread($newfile, filesize($filename));

Все содержимое текстового файла хранится теперь в переменной $file_contents. Эти данные можно выводить на экране с помощью оператора echo или записать в другой текстовый файл.

В некоторых случаях может понадобиться прочитать и работать с отдельными частями содержимого текстового файла. При использовании fread() все содержимое файла хранится в одной переменной, что затрудняет работу с отдельными частями файла. Если текстовый файл содержит разграничители для разделения отдельных фрагментов данных, можно применить для чтения другую функцию чтения — fgetcsv(). Эта функция читает содержимое файла и создает массив, делая доступными определенные части текста.

Предположим, что текстовый файл numbers.txt существует и содержит следующие данные:

numbers.txt 

50,17,34,90

Следующий сценарий демонстрирует использование функции fgetcsv() для чтения содержимого текстового файла.

fileread.php 

<?php

$filename = "C:/numbers.txt";

$newfile = @fopen($filename, "r") or exit("Could not open file");

$file_contents = @fgetcsv($newfile, filesize($filename),",") 
  or exit("Could not read file contents");

for ($i=0; $i < sizeof($file_contents); $i++)
{
	echo $file_contents[$i];
	echo "<br/>";
}

fclose($newfile);

?>

После открытия файла функция fgetcsv() считывает все содержимое файла, создавая массив — '$file_contents'. Третий параметр функции fgetcsv() определяет, что каждый элемент, отделенный с помощью запятой ",", станет элементом нового массива. Так как numbers.txt содержит значения 50,17,34,90, то $file_contents[0] = 50, $file_contents[1] = 17, $file_contents[2] = 34, $file_contents[3] = 90. После создания массива значениями можно манипулировать с помощью любой из функций для массивов PHP. В предыдущем примере цикл for выполняет итерации на массиве $file_contents[] и выводит каждое число.

После завершения обработки файла функция fclose() используется для закрытия открытого файла.

Запись в файлы

Этот раздел описывает, как использовать PHP для записи содержимого в файлы в системах Windows.

PHP содержит функцию fwrite() для записи файлов. Эта функция определена ниже.

fwrite(указатель_файла,строка) – записывает содержимое строки в поток указанного файла. Если задан аргумент length (длина), запись будет остановлена после записи length байтов или достижения конца строки.

Следующий пример иллюстрирует, как записать все содержимое файла:

filewrite.php 

<?php

$filename = "C:/Documents and Settings/Administrator/MyFiles/myfile.txt";

$newfile = @fopen($filename, "w") or exit("Невозможно открыть файл");

$file_contents = "Добавьте эту строку в текстовый файл";

fwrite($newfile,$file_contents);

fclose($newfile);

?>

Первый шаг состоит в создании переменной для хранения полного пути доступа к файлу, который будет открыт или создан:

$filename = "C:/Documents and Settings/Administrators/MyFiles/myfile.txt";

Путь доступа к текстовому файлу myfile.txt хранится в переменной с именем filename. Затем создается указатель файла с именем $newfile и используется с функцией fopen() для открытия файла, указанного в предыдущем разделе. Указатель файла применяется для ссылки на только что открытый файл. Файл открывается в режиме записи:

$newfile = fopen($filename, "w");

Указатель файла является переменной PHP, содержащей ссылку на открытый файл. Он будет задействован позже для записи содержимого в открытый файл.

Затем создается переменная с именем $file_contents и ей присваивается строковое значение, которое будет записано в текстовый файл myfile.txt.

Наконец вызывается функция fwrite(). Первый параметр функции fwrite() указывает на имя файла, в который будет записываться содержимое. Второй параметр содержит текст, который будет записываться в открытый файл.

fwrite($newfile, $file_contents);

После завершения обработки файла используется функция fclose() для закрытия открытого файла.

В некоторых случаях может понадобиться записать содержимое существующего файла в новый файл. Этот процесс требует использования функций fopen(), fread() и fwrite(). Открывается первый файл, читается его содержимое и записывается в новый файл, который также был открыт. Следующий сценарий показывает реализацию такого процесса:

filecopy.php 

<?php

$fileAname = "C:/MyFiles/PHP/file1.txt";
$fileBname = "C:/MyFiles/PHP/file.txt";

$currentfile = @fopen($fileAname,"r") or exit("Невозможно открыть файл");
$fileAcontents = fread($currentfile,filesize($fileAname));

$newfile = fopen($fileBname,"w");

fwrite($newfile, $fileAcontents);

fclose($newfile);
fclose($currentfile);

echo "Содержимое файла file1.txt скопировано в файл file.txt";

?>

Этот сценарий копирует содержимое "file1.txt" в новый файл "file.txt". Сначала объявляются две переменные $fileAname и $fileBname, которым присваиваются пути доступа к каталогам существующего и нового файла. Функция fopen() используется для открытия текущего файла для чтения его содержимого. Открытый файл присваивается указателю файла $currentfile. Содержимое открытого файла считывается с помощью функции fread() и присваивается переменной $fileAcontents. Затем функция fopen() применяется снова для открытия нового файла. Открытый файл присваивается указателю файла $newfile. Функция fwrite() используется для записи содержимого исходного файла в новый файл. Когда процесс копирования завершается, оба файла закрываются с помощью функции fclose().

Копирование файлов

Этот раздел описывает, как использовать PHP для копирования файлов в системах Windows.

PHP содержит функцию copy() для копирования файлов. Эта функция определяется ниже:

copy(исходный_файл, новый_файл) – копирует содержимое исходного файла, определенного первым параметром, в новый файл, определенный вторым параметром функции. Функция возвращает значение true или false.

Следующий пример показывает, как скопировать содержимое одного файла в другой файл:

filecopy.php 

<?php

$orig_filename = "C:/Documents and Settings/Administrator/MyFiles/myfile.txt";

$new_filename = "C:/Documents and Settings/Administrator/MyFiles/myNewfile.txt";

$status = @copy($orig_filename, $new_filename) or die("Невозможно скопировать файл");

echo "Содержимое файла успешно скопировано!";
				
?>

Первый шаг состоит в создании переменной для хранения полного пути доступа к исходному файлу, содержимое которого будет скопировано:

$orig_filename = "C:/Documents and Settings/Administrators/MyFiles/myfile.txt";

Затем создается вторая переменная для хранения полного пути доступа к новому файлу, который будет создан:

$new_filename = "C:/Documents and Settings/Administrators/MyFiles/myNewfile.txt";

Копирование выполняет функция copy(), принимая два параметра, путь доступа к исходному файлу — $orig_filename, и путь доступа к новому — $new_filename. Функция copy() возвращает значение true, если копирование завершается успешно; иначе возвращается значение false. Возвращаемое значение хранится в переменной $status.

$status = copy($orig_filename, $new_filename) or die("Невозможно скопировать файл");

Если функция copy() отказывает, выполняется функция die(), выводя сообщение об ошибке. Иначе с помощью функции echo выводится сообщение об успехе.

echo "Содержимое успешно скопировано";

В предыдущем разделе функция fwrite() используется вместе с функцией fread() для чтения содержимого одного файла и записи этого содержимого в новый файл. Если содержимое исходного файла не добавляется к существующему файлу, то функция copy() предоставляет более простой подход для копирования содержимого из существующего файла в новый файл.

Удаление файлов

Этот раздел описывает, как использовать PHP для удаления файлов в системах Windows.

PHP содержит функцию unlink() для удаления файлов. Функцию unlink() надо использовать с осторожностью. После удаления файла его невозможно восстановить. Эта функция определяется ниже.

unlink(имя_файла) – удаляет файл, определенный параметром. Функция возвращает значение true или false.

Следующий пример показывает, как удалить файл с помощью функции unlink():

filedelete.php 

<?php

$filename = "C:/Documents and Settings/Administrator/MyFiles/myfile.txt";

$status = unlink($filename) or exit("Невозможно удалить файл");

echo "файл удален успешно";
				
?>

Первый шаг состоит в создании переменной для хранения полного пути доступа к файлу, содержимое которого будет удалено:

$filename = "C:/Documents and Settings/Administrators/MyFiles/myfile.txt";

Функция unlink() выполняется, получая один параметр, путь доступа исходного файла — $filename. Функция unlink() возвращает значение true, если файл удаляется успешно; иначе возвращается значение false. Возвращаемое значение хранится в переменной $status.

$status = unlink($filename) or die("Невозможно удалить файл");

Если функция unlink() отказывает, выполняется функция exit(), выводя сообщение об ошибке. Иначе с помощью оператора echo выводится сообщение об успехе:

echo "файл удален успешно";

Переименование файлов

Этот раздел описывает, как использовать PHP для переименования файлов в системах Windows.

PHP содержит функцию rename() для переименования файлов. Эта функция определена ниже:

rename($orig_filename, $new_filename) – переименует файл, определенный первым параметром, в имя, определенное вторым параметром. Функция возвращает значение true или false.

Следующий пример показывает, как переименовать файл с помощью функции rename():

filerename.php 

<?php

$orig_filename = "C:/Documents and Settings/Administrator/MyFiles/myfile.txt";
$new_filename = "C:/Documents and Settings/Administrator/MyFiles/newfile.txt";
$status = rename($orig_filename, $new_filename) or exit("Невозможно переименовать файл");

echo "файл успешно переименован";

?>

Первый шаг состоит в создании переменной для хранения полного пути доступа к файлу, который будет переименован:

$orig_filename = "C:/Documents and Settings/Administrators/MyFiles/myfile.txt";

Второй шаг состоит в создании переменной для хранения полного пути доступа к файлу, который будет создан, когда старый файл будет переименован:

$new_filename = "C:/Documents and Settings/Administrators/MyFiles/newfile.txt";

При выполнении функция rename() получает два параметра, путь доступа к исходному файлу — $orig_filename и путь доступа к файлу, который будет создан, когда старый файл будет переименован — $new_filename. Функция rename() возвращает значение true, если файл переименовывается успешно, иначе возвращается значение false. Возвращаемое значение хранится в переменной $status.

$status = rename($orig_filename,$new_filename) or exit("Невозможно переименовать файл");

Если функция rename() отказывает, выполняется функция exit(), выводящая сообщение об ошибке. Иначе выводится сообщение об успехе с помощью оператора echo.

echo "файл успешно переименован";

Получение данных формы

В большинстве случаев введенные пользователями данные формы записывают в СУБД, такую, как MS Access и MySQL, с помощью функций ODBC и MySQL, рассмотренных в разделах

Рассмотрим приведенную выше страницу с формой. Следующий пример показывает, как записать отправленные данные формы в текстовый файл:

<?php

if ($_POST['SubmitB'] == "Submit Data")
{
$file_name = "c:\formfile.txt";
$open_file = fopen($file_name, "a+");

$file_contents= $_POST['FName'] . "," . $_POST['LName'] . "," . $_POST['DateTime'] ."\n";

fwrite($open_file,$file_contents);

fclose($open_file);

echo "Данные формы успешно записаны в файл";
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" 
lang="en">
<head>
  <title>Страница Web </title>
</head>
<body>

<p>Запись данных формы в файл </p>

<p>
<form method="post" action="createfile.php">

Enter First Name <input type="text" name="FName"/><br/><br/>
Enter Last Name  <input type="text" name="LName"/><br/><br/>
<input type="hidden" name="DateTime" value="<?php echo date('g:i a') ?>"/>
<input type="submit" name="SubmitB" value="Submit Data"/>

</form>
</p>

</body>
</html>

В этом примере форма страницы XHTML содержит текстовое поле для имени и фамилии пользователя. Также кодируется скрытое поле, в которое заносится с помощью функции PHP date() текущие дата и время. Когда нажимается кнопка отправки формы, создается новый текстовый файл 'formfile.txt' и открывается в режиме добавления:

$file_name = "c:\formfile.txt";
$open_file = fopen($file_name, "a+");

Затем переменной $file_contents присваиваются значения суперглобальных переменных POST, содержащие имя и фамилию пользователя и текущее значение даты и времени. К строкам присоединяется запятая, чтобы создать разграничители этих значений. В конце каждой строки добавляется символ новой строки для создания возврата каретки:

$file_contents= $_POST['FName'] . "," . $_POST['LName'] . "," . $_POST['DateTime'] ."\n";

Наконец, содержимое переменной $file_contents записывается (добавляется) в текстовый файл. Файл закрывается, и используется оператор echo для вывода подтверждающего сообщения в окне браузера:

fclose($open_file);
echo "Данные формы успешно записаны в файл";

Пересылка файлов

В некоторых динамичных приложениях Web необходимо разрешать пользователям пересылку файлов с локального компьютера на сервер Web. Такое приложение может позволить пользователям обмениваться файлами с другими пользователями или просто предоставить механизм для хранения файлов для будущего использования. Этот раздел вводит функцию PHP для пересылки файлов.

В PHP пересылку файлов можно реализовать с помощью следующей функции:

move_uploaded_file(имя_файла, место_назначения) – перемещает файл в указанное место на сервере.

Прежде чем переходить к деталям кода PHP, давайте посмотрим на элементы управления формы XHTML, необходимые для создания страницы для пересылки файлов.

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

Select File: <input type="file" name="uploadFile">

<input name="SubmitB" type="submit" value="Upload File">

</form>

Блок кода начинается со стандартного тега XHTML <form>. Кроме атрибутов action и method форма, используемая для пересылки файлов, должна включать тип кодирования или атрибут "encrypt". Когда форма применяется для пересылки файлов должно использоваться значение атрибута encrypt "multipart/form-data".

После тега <form> следует элемент текстового поля <input>. Этот элемент управления нужен для определения расположения и имени файла, который будет пересылаться. Он содержит атрибуты name и type. Атрибут type должен быть задан как "file". name имеет определенное пользователем значение, которое будет использоваться сервером для идентификации файла источника во время процесса пересылки.

Текстовое поле file включает также кнопку "Browse…" при выводе в окне браузера. Когда нажимается эта кнопка, появляется диалоговое окно, позволяющее пользователю найти на своем локальном компьютере файл, который будет пересылаться.

Последним элементом управления является кнопка отправки ( submit ). Кнопка отправки используется для инициирования процесса отправки формы. Когда нажимается эта кнопка, информация о файле посылается на страницу upload.php, которая содержит код PHP для пересылки файла в папку, расположенную на сервере Web.

После кодирования формы XHTML на страницу можно добавить сценарий PHP для выполнения динамической пересылки файла. Когда файл пересылается с помощью функции move_uploaded_file(), он кратко хранится во временном месте на сервере Web. Для перемещения файла в его конечное место назначения и манипуляций с его различными свойствами, используется суперглобальный массив PHP $_FILES. Массив $_FILES применяет значение name, заданное в теге <input type="file" name="uploadFile"/> (в данном случае 'uploadFile' ) для идентификации пересылаемого файла. Записи, связанные с массивом $_FILES, описаны ниже.

$_FILES['uploadFile']['tmp_name'] – каталог на сервере web, где временно хранится файл. По умолчанию используется каталог uploadtemp, расположенный в папке PHP.

$_FILES['uploadFile']['name'] – имя файла в системе пользователя.

$_FILES['uploadFile']['size'] – размер файла в байтах.

$_FILES['uploadFile']['type'] – тип MIME файла.

$_FILES['uploadFile']['error'] – код ошибки, связанный с пересылкой файла (0 – успешная пересылка, 1 – файл превышает максимальный размер пересылки, 2 – файл превышает максимальный размер файла, 3 – файл частично загружен, 4 – файл не загружен).

Следующие блоки кода показывают, как массив $_FILES используется с функцией move_uploaded_file() для создания простой процедуры пересылки.

upload.php 

<?php

  if ($_POST[SubmitB] == "Upload File")
  {
  

  move_uploaded_file ($_FILES['uploadFile'] ['tmp_name'], 
   "../PHPTutorial/ECommerce/Databases/{$_FILES['uploadFile'] ['name']}");
       
 echo "Файл загружен.";
       
  
  }


?>

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

Select File: <input type="file" name="uploadFile">

<input name="SubmitB" type="submit" value="Upload File">

</form>

Когда нажимается кнопка "Upload File", то файл, определенный в <input type="file" name="uploadFile"/>, автоматически посылается во временную папку на сервере Web. Затем вызывается функция move_uploaded_file() для перемещения файла. Первый параметр функции, $_FILES['uploadFile'] ['tmp_name'], становится ссылкой на файл, когда функция готовится к перемещению его в конечное место назначения. Второй параметр, "../PHPTutorial/ECommerce/Databases/{$_FILES['uploadFile'] ['name']}", является относительным путем доступа к папке, в которой был временно сохранен файл. Последняя часть пути доступа включает код {$_FILES['uploadFile'] ['name']}. Это можно интерпретировать как имя файла, который был введен в текстовое поле file с именем "uploadFile". Вкратце, функция move_uploaded_file() перемещает файл из временной папки пересылки folder ($_FILES['uploadFile'] ['tmp_name']) в папку "../PHPTutorial/ECommerce/Databases/), и файл сохраняется с тем именем, которое ввел пользователь, ({$_FILES['uploadFile'] ['name']}). Файлы можно пересылать в любой каталог на сервере Web, однако папка места назначения должна иметь полномочия доступа для записи ("write").

Предыдущий пример кода иллюстрирует легкость пересылки файла, но с предположением, что процесс пересылки всегда будет работать, а ошибки никогда не будут происходить. Мы не рассмотрели, что происходит, когда пользователь пытается переслать файл, который превышает ограничение на размер, если папка загрузки не имеет подходящих полномочий безопасности или если некоторые непредвиденные сетевые проблемы мешают пересылке всего файла. Чтобы улучшить приведенный выше код пересылки, необходимо предоставить процедуры, которые проверяют ошибки и предоставляют пользователю информацию о том, как исправить эти проблемы.

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

upload.php 

<?php

if ($_POST[SubmitB] == "Upload File")
{

move_uploaded_file ($_FILES['uploadFile'] ['tmp_name'], 
       "../PHPTutorial/ECommerce/Databases/{$_FILES['uploadFile'] ['name']}");
      
      if($_FILES['uploadFile'] ['error'] > 0)
      {
            switch ($_FILES['uploadFile'] ['error'])
      {
      
      case 1: echo 'Файл превышает максимальный серверный размер для пересылки';
      break;
      
      case 2: echo 'Файл превышает максимальный размер файла';
      break;
      
      case 3: echo 'Файл загрузился только частично';
      break;
      
      case 4: echo 'Никакой файл не загрузился';
      break;
      
      }
            
      }
      
      else
      
      {
      
      echo 'Файл успешно загружен';
      
      }
}

?>

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

Select File: <input type="file" name="uploadFile"/>

<input type="hidden" name="MAX_FILE_SIZE" value="1000000"/>

<input name="SubmitB" type="submit" value="Upload File"/>

</form>

Обновленный код включает оператор if и оператор switch/case для проверки статуса пересылки файла. После выполнения функции move_uploaded_file() оператор if проверяет значение массива $_FILES['uploadFile'] ['error']. Если значение больше 0, то произошла ошибка. Значение $_FILES['uploadFile'] ['error'] передается оператору switch и проверяется. После этого выводится соответствующее сообщение об ошибке. Если значение $_FILES['uploadFile'] ['error'] равно 0, оператор else выводит сообщение об успешном выполнении.

Еще одним новым свойством, включенным в этот пример, является скрытое текстовое поле XHTML с именем "MAX_FILE_SIZE". Это специальный скрытый тег, который можно использовать с тегом file, <input type="file" name="uploadFile"/>, для задания максимального размера файла. Если файл превышает определенное значение, то произойдет ошибка. Это значение измеряется в байтах. Здесь максимальный размер файла задан равным 1,000,000 байт (приблизительно 1 мегабайт). Можно также задать максимальный серверный размер пересылки. Это максимальный размер файла, заданный на сервере в файле PHP.ini.

Вернуться к учебному плану