Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Переименование и удаление файлов и каталогов




В РНР есть еще несколько полезных встроенных функций для работы с файлами и каталогами. К ним относятся переименование и удаление файлов, а также получение списка файлов в каталоге. Обсудим синтаксис данных функций, а затем посмотрим, как они работают в контексте типичного сценария РНР.

Функция rename () имеет следующий синтаксис:

o rename (“старое имя”, “новое имя”);

Она применима как к файлам, так и каталогам.

Еще одна функция - filesize (). Она

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

o $Number = filesize ("filename");

Для наглядного примера создадим панель управления каталогами:

1. Откроем текстовый редактор и начнем новый РНР-документ.

2. Создадим стандартный HTML-заголовок.

<HTML><HEAD><TITLE>Viewing Files in a Directory</TITLE> </HEAD><BODY>

3. Начнем с таблицы, затем откроем РНР-раздел.

<TABLE BORDER=0 WIDTH="60%" CELLSPACING=2

CELLPADDING=2 ALIGN=CENTER>

<?php

Чтобы страница выглядела аккуратно, разместим данные в таблице.

4. Напишем несколько условных конструкций, проверяющих, нужно ли выполнять определенные действия исходя из заданных пользователем указаний. Нажав на кнопки в форме, в массивы $Delete (удаление файлов)

и $Rename (переименование файлов) вы запишете списки файлов для этих

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

if ($Upload) { // Обработка загрузки файла.

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>Uploaded

— file name: $File_name</TD></TR>\n");

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>Uploaded

-file size: $File_size</TD></TR>\n");

if (copy ($File, "users/$File_name")) {

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>Your file,

—SFile_name, was successfully uploaded!</TD></TR>\n");

} else {

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>Your file,

-$File_name, could not be copied.</TD></TR>\n");

}

unlink ($File);

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>&nbsp;</TD></TR>\n");}

Переменная $Upload будет задана, если пользователь хочет загрузить файл на сервер. Следовательно, если переменная $Upload существует, загружаемый файл будет обработан так, как мы видели выше.

Последняя инструкция print, которая создает пустой ряд в таблице, используется исключительно в эстетических целях, как и в последующих двух условиях. Пустая строка сделает Web-страницу менее загроможденной.

5. if ($Delete) { // Handle file deletions.

for ($1 = 0; $1 < count ($Delete); $i++) {

if (unlink users/$Delete[$i]"-)) {

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>Your file,

— $Delete[$i], was successfully deleted! </TDx/TR>\n");

} else {

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>Your file,

-$Delete[$i],. could not be deleted. </TD></TR>\n");

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>&nbsp;</TD></TR>\n");}

Переменная $Delete используется для определения того, нужно ли удалять какие-либо файлы. Так как желательно удалять несколько файлов сразу, то был создан массив. Цикл обработает каждый элемент массива, удаляя -файлы по очереди.

6. if ($Rename) { // Handle file renaming.

for ($n - 0; $n < count ($Rename); $n+f) {

$OldFilename = $Rename[$n];

$Old = "users/$01dFilename";

$New = "users/$NewName[$01dFilename] ";

if (rename ($01d, $New)) {

print 1"<TR><TD COLSPAN=4 ALIGN=CENTER>Your file,

— $Rename[$n], was successfully renamed!</TD></TR>\n");

} else {

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>Your file,

— $Rename[$n], could not be renamed. < /TD>< /TR> \n ");

}}

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>&nbsp;</TD></TR>\n");}

Механизм работы с элементами массива для переименования файлов такой же, как и при удалении файлов. Как только вы присвоили новое и старое имена файлов, вызывается функция rename (), которая и выполняет указанные изменения.

7. Создадим HTML-форму, не забыв включить код ENCTYPE для загрузки файла на сервер.

print ("<FORM ACTION=\"files.php\" METHOD=POST

-ENCTYPE=\"multipart/form-data\">\n");

8. Распечатаем заголовки таблицы.

print ("<TR><TD><B>File Name</B></TD><TD><B>File

—Size</B></TD><TD><B>Delete</B></TD><TD><B>Rename</B>

—Enter the New Name in the Box)</TD></TR>\n");

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

$Open = opendir ("users");

while ($Files = readdir ($Open)) {

$Filename = "users/". $Files;

if (is_file ($Filename)) {

$Size = filesize ("users/$Files");

print ("<TR><TD>$Files</TD><TD>$Size</TD><TD><INPUT

-TYPE=CHECKBOX NAME=\"Delete[]\" VALUE=\"$Files\">

-</TD><TD><INPUT TYPE=CHECKBOX NAME= \"Rename [] \"

-VALUE=\"$Files\"><INPUT TYPE=TEXT NAME=

-\"NewName[$Files]\"></TD></TR>\n"); -

closedir ($Open);

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

10. Создаём в форме опцию загрузки на сервер.

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>&nbsp;</TDx/TR>\n");

print ("<TR><TD COLSPAN=4 ALIGN=CENTER><INPUT TYPE=CHECKBOX

-NAME=\"Upload\" VALUE=\"Yes\">Upload a file to the server:<INPUT

-TYPE=FILE NAME=\"File\" SIZE=20></TD></TR>\n");

print ("<TR><TD COLSPAN=4 ALIGN=CENTER><INPUT TYPE=SUBMIT

-NAME=\"SUBMIT\" VALUE=\"Submitl\"></FORM></TD></TR>\n");

 

11. Закрываем PHP и HTML.

?>

</TABLE></BODY></HTML>

12. Сохраняем сценарий как files.php и загружаем его на сервер

в одно место с каталогом users.

Рис. 7 files.php загрузили на сервер в одно место с каталогом users

Рис. 8 В каталоге users создали 6 файлов (В некоторых ввели текст)

 


<HTML>

<HEAD>

<TITLE>Viewing Files in a Directory</TITLE>

</HEAD>

<BODY>

<TABLE BORDER=0 WIDTH="60%" CELLSPACING=2 CELLPADDING=2 ALIGN=CENTER>

<?php

 

/* Сценарий отображает информацию о файлах в директории и позволяет

пользователю удалять, загружать и переименовывать файлы. */

 

if ($Upload) { // Обработка загрузки файла.

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>Uploaded file name:

$File_name</TD></TR>\n");

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>Uploaded file size:

$File_size</TD></TR>\n");

if (copy ($File, "users/$File_name")) {

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>Your file, $File_name,

was successfully uploaded!</TD></TR>\n");

} else {

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>Your file, $File_name,

could not be copied. </TD></TR>\n");

}

unlink ($File);

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>&nbsp;</TD></TR>\n");

}

if ($Delete) {

for ($i = 0; $i < count ($Delete); $i++) {

if (unlink ("users/$Delete[$i]")) {

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>Your file,

$Delete[$i], was successfully deleted!</TD></TR>\n");

} else {

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>Your file,

$Delete[$i], could not be deleted.</TD></TR>\n");

}

}

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>&nbsp;</TD></TR>\n");

}

 

if ($Rename) {

for ($n = 0; $n < count ($Rename); $n++) {

$OldFilename = $Rename[$n];

$Old = "users/$OldFilename";

$New = "users/$NewName[$OldFilename]";

if (rename ($Old, $New)) {

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>Your file,

$Rename[$n], was successfully renamed.</TD></TR>\n");

} else {

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>Your file,

$Rename[$n], could not be renamed.</TD></TR>\n");

}

}

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>&nbsp;</TD></TR>\n");

}

// Начало формы.

 

print ("<FORMACTION=\"files.php\" METHOD=POST ENCTYPE=\"multipart/

form-data\">\n");

print ("<TR><TD><B>File Name</B></TD><TD><B>File Size</B>

</TD><TD><B>Delete</B></TD><TD><B>Rename</B> Enter the New Name in

the Box</TD></TR>\n");

 

// Чтение файлов из каталога.

 

$Open = opendir ("users");

while ($Files = readdir ($Open)) {

$Filename = "users/". $Files;

if (is_file ($Filename)) {

$Size = filesize ("users/$Files");

print ("<TR><TD>$Files</TD><TD>$Size</TD><TD><INPUT

TYPE=CHECKBOX NAME=\"Delete[]\" VALUE=\"$Files\">

</TD><TD><INPUT TYPE=CHECKBOX NAME=\"Rename [] \"

VALUE=\"$Files\"><INPUT TYPE=TEXT NAME= \"NewName[$Files]\">

</TD></TR>\n");

}}

closedir ($Open);

 

// Вывод поля для загрузки файлов.

 

print ("<TR><TD COLSPAN=4 ALIGN=CENTER>&nbsp;</TD></TR>\n");

print ("<TR><TD COLSPAN=4 ALIGN=CENTER><INPUT TYPE=CHECKBOX

NAME=\"Upload\" VALUE=\"Yes\">Upload a file to the server:<INPUT

TYPE=FILE NAME=\"File\" SIZE=20></TD></TR>\n");

print ("<TR><TD COLSPAN=4 ALIGN=CENTER><INPUT TYPE=SUBMIT

NAME=\"SUBMIT\" VALUE=\"Submit!\"></FORM></TD></TR>\n");

?>

</TABLE>

</BODY>

</HTML>

Переименуем файл File4.txt в Another_Name (Рис. 9)

 

Рис. 9 Пользователь видит такую страницу, если посещает ресурс впервые. Триггерные кнопки позволяют пользователю удалять и переименовывать файлы, а также загружать их на сервер.

 

Удалим файл File1.txt и переименуем data.txt в new_data(Рис. 10)

Рис. 10 Демонстрация работы формы.

 

Рис. 11 Демонстрация работы формы.

 

Заключение

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...