Переименование и удаление файлов и каталогов
⇐ ПредыдущаяСтр 3 из 3 В РНР есть еще несколько полезных встроенных функций для работы с файлами и каталогами. К ним относятся переименование и удаление файлов, а также получение списка файлов в каталоге. Обсудим синтаксис данных функций, а затем посмотрим, как они работают в контексте типичного сценария РНР. Функция 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> </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> </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> </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> </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> </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> </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> </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> </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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|