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

реклама
РАЗРАБОТКА ЭЛЕКТРОННОГО ПОРТАЛА
Тема 5
Организация файлового обмена с
электронным порталом
Цель темы –сформировать представление о
технологии работы с файлами на Web-сервер
через интерфейсы пользователей портала
1.Включение файлов в документ
2.Создание файлов и работа с ними
3.Загрузка файлов на сервер
4.Работа с каталогами
5.Корректная работа с файлами
6.Оптимизация графических файлов
1
1. ВКЛЮЧЕНИЕ ФАЙЛОВ В ДОКУМЕНТ
Протокол HTTP не поддерживает сохранение
Путь кввключаемому
файлу:
состояния, поэтому файлы
Web-приложениях
относительный
играют важную роль как средства
хранения
или между
от корня
web-сервера:
информационных данных
сеансами
/home/proba/www/second.php
При сетевом пути – включается
include() и require() – включение
файла
в PHP-скрипт
результат
работы
скрипта
<?php
include ("second.php");
?>
Подавление ошибок:
@include() – скрипт не останавливается
include_once() и require_once() - позволяют
включить файл в документ только один раз
2. СОЗДАНИЕ ФАЙЛОВ И РАБОТА С НИМИ
Путь к предваряется
файлу (абсолютное
или
Любая операция с файлами
операцией
имя fopen():
файла)
открытия файла приотносительное
помощи функции
fopen(filename, mode)
r — открыть файл только для чтения;
r+ — открыть файл для чтения и записи;
w— создать новый пустой файл только для записи;
w+— создать новый пустой файл для чтения и записи;
а— открыть файл для дозаписи;
а+ — открыть файл для дозаписи и чтения данных;
В случае удачного открытия файла функция fopen ()
возвращает дескриптор файла,
в случае неудачи — false, например:
$fd = fopen("file.txt","w");
print($fd);
Закрытие файлов выполняется функцией fclose (fd):
ЗАПИСЬ В ФАЙЛ
количество символов в
Записываемая
в
Запись в файл осуществляется
функциями
()
строке,
которыеfputs
должны
Дескриптор файла
файл строка
и fwrite ()
быть записаны
fputs(fd, str [, length])
<?php
// Создаем файл для записи
$fd = fopen ("file.txt","w");
// Записывааем в файл
fwrite($fd, "Привет, студенты!");
//Закрываем файл Эта функция возвращает
строку длиной length
fclose ($fd);
Дескриптор файла
байтов
?>
Чтение содержимого открытого файла можно осуществить
при помощи функции fread(fd, length)
filesize($filename) – количество байт в файле
ПОЛУЧЕНИЕ МАССИВА ИЗ ФАЙЛА
Функция file() записывает содержимое файла в
массив (каждая строка – элемент массива)
Чтение и вывод содержимого файла по строкам:
Массив
<?php
$content = file("file.txt");
foreach($content as $line) echo "$line<br>";
?>
Подсчёт количества строк в файле (в массиве):
<?php
$content = file("file.txt");
echo count($content);
?>
ОСНОВНЫЕ АТРИБУТЫ ФАЙЛА
bool file_exists(string filename) – проверка
существования файла
int filesize(string filename) – размер файла в
байтах
string filetype(string filename) – тип файла:
file - обычный файл, dir – каталог и т.п.
Удаление файла: bool unlink(string filename)
<?php
if ($fu = @unlink("file.txt")) print "файл удален" ;
else echo "Ошибка удаления файла";
?>
3. ЗАГРУЗКА ФАЙЛОВ НА СЕРВЕР
Для загрузки файлов на сервер необходима
HTML-форма и PHP-скрипт для ее обработки
<html><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="Загрузить"><br>
</form>
</body></html>
ДВУМЕРНЫЙ МАССИВ $_FILES
Характеристики загруженного файла доступны
через двумерный массив $_FILES :
$_FILES["filename"] ["name"] — содержит исходное имя
файла на клиентской машине;
$_FILES["filename"] ["size"] — содержит размер
загруженного файла в байтах;
$_FILES ["filename"] ["type"] — MIME-тип файла;
$_FILES [ "filename" ] ["tmp_name"] —имя временного
файла, в который сохраняется загруженный файл;
$_FILES ["filename"]["error"] – код ошибки, появившейся
при загрузке
<?php
После
завершения
работы
скрипта
if (copy ($_FILES["filename"] ["tmp_name"],
временный файл будет
удален!
"temp/".$_FILES["filename"]
["name"]))
{ echo("Файл
успешно
загружен <br>");
}
Необходимо
его скопировать
в другое
else {место
echo("Ошибка
загрузки
файла");
}
до завершения
работы
скрипта
?>
ОГРАНИЧЕНИЕ ОБЪЕМА ЗАГРУЖАЕМОГО ФАЙЛА
if($_FILES["filename"]["size"] > 1024*3*1024)
{ exit("Размер файла превышает
3 мегабайта");
}
Значение
директивы
upload_max_filesize можно
изменить
в
Максимальный размер загружаемого
файла
конфигурационном файле
можно также задать при
помощиphp.ini
директивы
upload_max_filesize, значение которой по
умолчанию равно 2 Мбайт:
if($_FILES["filename"]["size"] > upload_max_filesize)
Максимально допустимый размер загружаемого файла в
байтах можно передавать из той же формы при
помощи скрытого поля с именем MAX_FILE_SIZE
<input type="hidden" name="MAX_FILE_SIZE" value="5000" >
4. РАБОТА С КАТАЛОГАМИ
Создание каталога
производится
с помощью
Права
на каталог в
Строка
с именем
функции mkdir():каталога восьмеричном виде
bool mkdir(string dirname, int mode)
<?php
if(mkdir("test", 0700)) echo "Каталог создан";
else echo "Ошибка создания каталога";
Для смены прав доступа используется
?>
функция chmod(), которая имеет
следующий синтаксис:
Удаление каталога:
bool chmod(string filename, int mode)
bool rmdir(string dirname)
Функция rmdir () удаляет только пустые каталоги,
для уничтожения непустого каталога
необходимо предварительно удалить все
файлы, содержащиеся в нем
4. РАБОТА С КАТАЛОГАМИ
Открытие, чтение и закрытие каталога
производится с помощью функций:
int opendir(string path)
string readdir(int dir)
void closedir(dir)
Пример вывода содержимого текущего
каталога :Открываем текущий
каталог
В цикле выводим
содержимое каталога
<?php
$dir = opendir(".");
while (($file = readdir($dir)) !== false) echo
"$file<br>";
closedir($dir);
Закрываем каталог
?>
Тип сотировки:
1-по убыванию
array scandir (string dir [, int sortingr_order])
11
5. КОРРЕКТНАЯ РАБОТА С ФАЙЛАМИ
Алгоритм корректной загрузки файла на сервер
Форма
<input type="file" name="filename">
$dir=opendir("path");
if($_FILES["filename"]["size"]
> 1024*30)
Загрузка параметров
в массив $_FILES
while(($file=readdir($dir))!==false)
{
if($file== $_FILES["filename"] ["name"])
}
Проверка объема файла
ошибка
сlosedir($dir);
if (copy ($_FILES["filename"] ["tmp_name"],
"path/".$_FILES["filename"] ["name"]))
Проверка имени файла в каталоге
ошибка
Проверка загрузки файла
Файл успешно загружен
ошибка
ПРИЕМ ОТ КЛИЕНТА ТЕКСТОВЫХ ДАННЫХ И
РИСУНКА
Форма с текстовыми полями и полем
загрузки файла
Запись данных в массивы
$_POST и $_FILES
Корректная загрузка файла при
помощи элементов массива
$_FILES
Запись данных в таблицы (в том числе
и путь к файлу)
УДАЛЕНИЕ ФАЙЛА РИСУНКА
Проверка наличия удаляемого файла file_exists(), а затем удаление - unlink() с
проверкой исполнения
Удаление записи о файле в БД
ОБНОВЛЕНИЕ ФАЙЛА РИСУНКА
Проверка наличия удаляемого файла, а
затем удаление с проверкой результата
Корректная загрузка нового файла
Обновление записи о файле в БД
6. ОПТИМИЗАЦИЯ ГРАФИЧЕСКИХ ФАЙЛОВ
Для работы с растровыми изображениями
предназначенная библиотека GD
<?php
phpinfo(); ?>
Пример раздела gd при наличии графической библиотеки
gd
GD Support
GD Version
FreeType Support
FreeType Linkage
GIF Read Support
GIF Create Support
JPG Support
PNG Support
WBMP Support
XBM Support
enabled
bundled (2.0.28 compatible)
enabled
with freetype
enabled
enabled
enabled
enabled
enabled
enabled
15
СОЗДАНИЕ УМЕНЬШЕННЫХ ИЗОБРАЖЕНИЙ
Для создания уменьшенных изображений
используется функция imagecopyresampled(),
идентификатор
bool imagecopyresampled ( нового изображения
идентификатор
resource dst_image,
resource src_image,
int dst_x, int dst_y,
int src_x, int src_y,
int dst_w, int dst_h,
int src_w, int src_h )
исходного
изображения
координаты
(x,y)
верхнего левого
угла в
координаты
(x,y) верхнего
новом
изображении
левого
угла
копируемого
новые
соответственно
блока
существующего
ширина
и высота
соответственно
ширина
изображения
копируемого
блока
Определяются
параметры
и высотав
исходного
Читается
память
изображения
копируемого
блока
изображение
<?php
(высота и ширина)
Создается новое пустое
$size = getimagesize(original.jpg);
Копируется
изображение
с
изображение
в памяти
$source = imagecreatefromjpeg(original.jpg);
преобразованием размера
$target = imagecreatetruecolor(100,60);
Результат выводиться в
imagecopyresampled($target,$source,0,0,0,0,100,60,$size[0]
jpg файл с наивысшим
,$size[1]);
качеством 100
imagejpeg($target, small.jpg, 100);
16
?>
Скачать