Помимо создание файлов очень часто возникают задачи,связанные с их перемещением,переименованием и удалением.Функции,ответственные за эти операции,представлены ниже.
Функции манипуляции файлами:
copy($source, $destination) - копирует файл с именем $source в файл с именем $destination.В случае успешного копирования функция возвращает TRUE,в противном случае возвращает FALSE.
unlink($filename) - удаляет файл с именем $filename.В случае успешного удаления функция возвращает TRUE,в противном случае возвращает FALSE.
rename($oldname, $newname) - переименовывает файл с именем $oldname,назначая ему новое имя $newname.В случае успешного переименования функция возвращает TRUE,в противном случае возвращает FALSE.
Ниже приводится пример использования функции copy(),которая копирует /myfolder/myfile.txt в текущий каталог.Если на момент копирования файл myfile.txt существовал в текущем каталоге,он будет перезаписан без предупреждений.
Использование функции copy():
1 2 3 4 |
<?php if(copy("/myfolder/myfile.txt", "myfile.txt")) echo "Файл успешно скопирован"; else echo "Не удалось скопировать файл"; ?> |
Если файл необходимо переместить,то его можно удалить из точки копирования при помощи функции unlink().
Перемещение файла:
1 2 3 4 5 6 7 |
<?php // Копируем файл if(!copy("/myfolder/myfile.txt", "myfile.txt")) exit "Не удалось переместить файл"; // Удаляем исходный файл if(unlink("/myfolder/myfile.txt")) echo "Файл успешно перемещен"; else echo "Не удалось переместить файл"; ?> |
Впрочем,операцию по переносу файла можно осуществить в один прием при помощи функции rename(),которая предназначена для переименования файлов,однако вполне может осуществлять их перенос - для этого достаточно указать новый путь,оставив имя файла без изменения.
Использование функции rename():
1 2 3 4 5 |
<?php // Перенос файла if(rename("/myfolder/myfile.txt", "myfile.txt")) echo "Файл успешно перемещен"; else echo "Не удалось переместить файл"; ?> |
Функции copy() и rename() могут копировать не только локальные файлы,но и сетевые.
Копирование файла из сети:
1 2 3 4 5 |
<?php if(copy("http://live-code.ru/index.php", "index.html")) echo "Файл успешно скопирован"; else echo "Не удалось скопировать файл"; ?> |
Загруженный файл из сети не будет содержать исходных PHP-кодов,лишь HTML-представление(даже если скрипт и копируемый файл находятся на одном сервере).
Это связано с тем,что обращение идет к Web-серверу,а не к файловой системе.По этой же причине при помощи функции copy() или любой другой функции невозможно загрузить файл на сервер.
Для загрузки файлов на сервер используется HTML-форма и элемент управления типа file.Сервер помещет загруженный файл во временный каталог(путь к файлу во временном каталоге можно получить при помощи элемента $_FILES['filename']['tmp_name']),из которого скрипт может его скопировать в любое другое место.Для проверки факта загрузки файла на сервер и перемещения его предназначены специальные функции,описание которых представлено ниже:
if_upload_file($filename) - возвращает TRUE,если файл был загружен на сервер,и FALSE в противном случае.В качестве аргумента функция принимает элемент массива $_FILES['filename']['tmp_name'],содержащий загруженный файл во временном каталоге.
move_uploaded_file($filename, $destination) - перемещает файл из временного каталога в каталог назначения.В качестве первого аргумента $filename зачастую используется элемент $_FILES['filename']['tmp_name'],второй аргумент может быть произвольным.Если необходимо сохранить исходное имя файла,можно воспользоваться элементом $_FILES['filename']['name'].В отличие от функции copy() функция move_uploaded_file() оперирует лишь загруженными файлами.
Использование функции is_uploaded_file() и move_uploaded_file():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php // Проверяем, загружен ли файл if(is_uploaded_file($_FILES['filename']['tmp_name'])) { // Файл успешно загружен, перемещаем его в текущий каталог if(move_uploaded_file($_FILES['filename']['tmp_name'], $_FILES['filename']['name'])) echo "Файл успешно загружен"; else echo "Файл не удалось загрузить"; } ?> <form action="upload.php" enctype="multipart/form-data" method="post"> <input name="filename" type="file"/> <input type="submit" value="Загрузить"/> </form> |