Тема 5. Организация файлового обмена с электронным порталом МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ

advertisement
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Тема 5. Организация файлового обмена
с электронным порталом
Цель — сформировать представление о технологии работы с файлами
на Web-сервер через интерфейсы пользователей портала.
В результате изучения темы студенты должны усвоить:
 Правила организации загрузки файлов через Web-интерфейс.
 Назначение и состав двумерного массива $_FILES.
 Технологии ограничений размера файла, загружаемого на Web-
сервер.
 Правила работы с каталогами на Web-сервере.
 Правила назначений на файлы и каталоги прав доступа.
 Технологию управления размерами графических файлов.
Оглавление
5.1. Загрузка файлов на сервер через Web-интерфейс пользователя .......................1
5.2. Работа с каталогами .............................................................................................4
5.3. Работа с правами доступа ....................................................................................7
5.4. Организация корректной работы с файлами через Web-интерфейс ...................8
5.5. Оптимизация графических файлов ................................................................... 10
Выводы ..................................................................................................................... 12
Вопросы для самопроверки ...................................................................................... 13
5.1. Загрузка файлов на сервер через Web-интерфейс
пользователя
Распространенной задачей является загрузка файлов на удаленный сервер
через интерфейсы пользователей, например при формировании каталога товаров
требуется иметь изображение товара или при формировании Web-страницы
требуется включить в нее изображение.
Для загрузки файлов на сервер в интерфейсе пользователя необходима HTMLформа, данные из которой передаются PHP-скрипту для ее обработки.
Простейшая форма может иметь следующий код:
<html>
<body>
<h1>Форма для загрузки файлов </h1>
<form action="load.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename"><br>
<input type="submit" value="Загрузить"><br>
</form>
</body></html>
1
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Если этот код поместить в файле index.html сайта proba, то в окне браузера
будет выведена форма, представленная на рис. 5.1.
Рис. 5.1. Пример простейшей формы для загрузки файлов через Webинтерфейс пользователя
Данная форма содержит только один элемент input, который имеет тип file.
Применение элемента такого типа указывает браузеру вывести дополнительную
кнопку Обзор для выбора файла с локального диска, который требуется передать
на сервер. Как и любой другой элемент формы, это поле имеет имя, задаваемое
при помощи атрибута name.
Следует помнить, что передавать файлы через форму можно только методом
POST. При этом необходимо использовать вид кодирования данных, при котором
данные каждого элемента формы передаются отдельным блоком (атрибут
enctype="multipart/form-data").
После того как Web-сервер получил HTTP-запрос браузера, содержимое
загруженного файла записывается во временный файл, который создается
в каталоге сервера, заданном по умолчанию для временных файлов, если другой
каталог не задан в файле php.ini (директивой upload_tmp_dir).
Характеристики
$_FILES:
загруженного
файла
доступны
через
двумерный
массив
 $_FILES




["filename"]["name"] —
содержит
исходное
имя
файла
на клиентской машине;
$_FILES ["filename"]["size"] — содержит размер загруженного файла
в байтах;
$_FILES ["filename"]["type"] — содержит MIME-тип файла;
$_FILES ["filename"]["tmp_name"] — содержит имя временного файла,
в который сохраняется загруженный файл;
$_FILES ["filename"]["error"] — код ошибки, появившейся при загрузке.
Здесь "filename" — это имя элемента формы, с помощью которого была
произведена загрузка файла на сервер. Оно может быть другим, если элемент
формы назвать иначе. Однако другие ключи двумерного массива $_FILES (name,
type и т. д.) остаются неизменными для любой формы.
Проверить успешность загрузки файла на сервер можно при помощи специальной функции is_uploaded_file(), которая принимает в качестве единственного параметра имя файла ($_FILES ["filename"]["name"]) и возвращает true в случае
успешной загрузки и false в случае неудачи.
2
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
После завершения работы скрипта временный файл будет удален. Это
означает, что необходимо его скопировать в другое место до завершения работы
скрипта.
В приведенном выше примере данные из формы передаются скрипту с именем
load.php. Для того чтобы скопировать файл из временного каталога
в необходимый каталог, например temp, код скрипта должен быть следующим:
<?php
if (copy ($_FILES["filename"] ["tmp_name"],
"temp/".$_FILES["filename"] ["name"]))
{ echo("Файл успешно загружен <br>"); }
else { echo("Ошибка загрузки файла"); }
?>
Если нужно получить доступную информацию
то в скрипт следует добавить следующий код:
о загруженном
файле,
echo("Характеристики файла: <br>");
есhо("Имя файла: ");
echo($_FILES["filename"]["name"]);
есho("<br>Размер файла: ");
echo($_FILES["filename"]["size"]);
echo("<br>Каталог для загрузки: ");
echo($_FILES["filename"]["tmp_name"]);
echo("<br>Tип файла: ");
echo ($_FILES["filename"]["type"]).
В некоторых случаях требуется ограничить размер файла, который может быть
загружен на сервер. К примеру, чтобы разрешить загрузку на сервер файлов
размером не более 2 Мбайт, нужно изменить скрипт следующим образом:
<?php
if($_FILES["filename"]["size"] > 1024*2*1024)
{ exit("Размер файла превышает два мегабайта"); }
if(copy(_FILES["filename"]["tmp_name"], "temp/".$_FILES["filename"}
["name"]))
{ есhо("Файл успешно загружен <br>"); }
else { echo("Ошибка загрузки файла"); }
?>
3
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Максимальный размер загружаемого файла можно также задать при помощи
директивы upload_max_filesize в конфигурационном файле php.ini, значение
которой по умолчанию равно 2 Мбайт:
if($_FILES["filename"]["size"] > upload_max_filesize).
Следует помнить, что изменения, вносимые в конфигурационный файл php.ini,
вступают в силу после перезагрузки Web-сервера.
Максимально допустимый размер загружаемого файла в байтах можно
передавать из той же формы при помощи скрытого поля с именем MAX_FILE_SIZE,
например:
<input type="hidden" name="MAX_FILE_SIZE" value="5000" >
При попытке загрузить файл, размер которого больше указанного в этом поле
значения, будет зафиксирована ошибка. Вообще ошибок при загрузке файлов
в PHP выделяют пять типов и соответственно $_FILES ["filename"]["error"] может
иметь пять значений:
0 — ошибки не произошло, файл загружен успешно;
1 — загружаемый файл превышает размер,
upload_max_filesize в файле настроек php.ini;
2 — загружаемый файл
MAX_FILE_SIZE формы html;
превышает
размер,
установленный
установленный
директивой
элементом
3 — файл был загружен частично;
4 — файл загружен не был.
5.2. Работа с каталогами
При организации работы по загрузке файлов на Web-сервер необходимо
выполнять
структурирование
загружаемых
файлов
с распределением
их по соответствующим каталогам.
РНР обладает большим списком функций для работы с каталогами.
Для установки текущего каталога применяется функция chdir(), которая имеет
следующий синтаксис:
int chdir(string path).
Примеры работы с этой функцией:
 chdir("с:/trip/data"); // переход по абсолютному пути;
 chdir("./js"); // переход в подкаталог текущего каталога;
 chdir(".."); // переход в родительский каталог.
Чтобы узнать имя текущего каталога, можно воспользоваться функцией
getcwd(), которая имеет следующий синтаксис:
string getcwd(string path).
4
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Для открытия каталога предназначена функция opendir(), которая имеет
следующий синтаксис:
int opendir(string path).
После того, как каталог открыт, прочитать его можно функцией readdir():
string readdir(int dir).
Эта функция возвращает имена элементов, содержащихся в каталоге. Кроме
файлов и папок в каталогах находятся также элементы "." и "..". Первый элемент
указывает на текущий каталог, а второй — на родительский.
Закрытие каталога выполняется при помощи функции closedir():
void closedir(dir).
Далее приведен скрипт, позволяющий вывести содержимое текущего каталога:
<?php
// Открываем текущий каталог
$dir = opendir(".");
//В цикле выводим содержимое каталога
while (($file = readdir($dir)) !== false) echo "$file<br>";
// Закрываем каталог
closedir($dir);
?>
При просмотре каталога необходимо явно проверять успешность операции
$file = readdir($dir), т. к. если файл или подкаталог называется «0» или любым
другим именем, начинающимся с нуля, то возвращаемое функцией readdir() имя
может быть воспринято как false.
Вместо использования комбинации функций opendir() и readdir() имена файлов
и каталогов можно получить при помощи функции scandir(), которая имеет
следующий синтаксис:
array scandir (string dir [, int sortingr_order]).
Эта функция возвращает массив, содержащий имена файлов и каталогов,
расположенных в каталоге dir. Необязательный параметр sorting_order указывает,
в каком
порядке
должна
проводиться
сортировка
элементов
массива.
По умолчанию сортировка выполняется в алфавитном порядке по возрастанию.
Если указан необязательный параметр sortingr_order, равный 1, то сортировка
производится в алфавитном порядке по убыванию.
Ниже приведен пример скрипта, возвращающего массив с именами файлов
и каталогов в заданном каталоге:
5
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
<?рhр
$dir = "dir";
// Сортировка по возрастанию
$files = scandir($dir);
// Сортировка по убыванию
$sort_files = scandir($dir, 1);
// Выводим содержимое массивов
print_r($files);
print_r(sort_files);
?>
Функции readdir() и scandir() не делают различий между содержимым каталога,
возвращая все элементы каталога, будь то файлы или подкаталоги. В первую
очередь может стоять задача в исключении каталогов "." и ".." из списка
содержимого каталога. Этого можно добиться при помощи следующего скрипта:
<?php
// Открываем каталог
$dir = opendir(".");
// В цикле выводим его содержимое
while (($file = readdir($dir)) !== false)
{ if($file != "." && $file != "..") echo "$file<br>"; }
// Закрываем каталог
closedir($dir);
?>
При создании Web-приложений часто встает задача определения количества
файлов или каталогов в подкаталоге, потому необходимо различать файлы
и подкаталоги. Для этого предназначены функции is_file() и is_dir(), которые
имеют следующий синтаксис:
bool is_file(string filename)
bool is_dir(string filename).
Обе функции принимают в качестве аргумента имя файла или каталога.
Функция is_file() возвращает true в том случае, если по переданному ей пути
в качестве аргумента находится файл, и false — в противном случае. Аналогичным
образом ведет себя и функция is_dir(), только по отношению к каталогу.
Следует отметить, что в РНР имеется функция file_exists(), которая проверяет
наличие файла или каталога по пути, переданного ей в качестве аргумента. Если
такой файл или каталог существует, функция возвращает true, если нет — false.
6
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Результат работы этой функции кэшируется. Соответственно очистить кэш можно
с помощью функции clearstatcache(). Для нелокальных файлов использовать
функцию file_exists() нельзя.
Удалить каталог можно с помощью функции rmdir(), которая имеет следующий
синтаксис:
bool rmdir(string dirname).
Функция принимает имя каталога dirname и возвращает true в случае удачного
удаления каталога и false при неудаче.
Следует помнить, что функция rmdir() удаляет только пустые каталоги. Для
уничтожения непустого каталога необходимо предварительно удалить все файлы,
содержащиеся в нем, за исключением записей каталогов "." и "..".
Создание каталога
следующий синтаксис:
производится
с помощью
функции
mkdir(),
имеющей
bool mkdir(string dirname, int mode).
Эта функция создает каталог с именем dirname и правами доступа,
определяемыми восьмеричным числом mode. В случае неудачи возвращает false.
Пример создания каталога test:
<?php
if(mkdir("test", 0700)) echo "Каталог успешно создан";
else echo "Ошибка создания каталога";
?>
Как видно из синтаксиса и примера при создании каталогов необходимо
указывать права доступа.
5.3. Работа с правами доступа
Большинство Web-серверов работают под управлением UNIX-подобной
операционной системы, которая имеет отличную от Windows систему прав
доступа.
В UNIX права доступа выставляются для трех групп:
 владельца файла;
 группы, в которую входит владелец файла;
 всех остальных.
Для каждой из групп права доступа задаются восьмеричным числом. При этом
праву чтения соответствует цифра 4, праву записи — 2, а исполнению — 1.
Общие права для групп задаются суммой этих чисел. Так, значение 6 (4 + 2)
обеспечивает возможность чтения и записи, а значение 7 (4 + 2 + 1)
предоставляет полный доступ к файлу или каталогу.
Для файлов наиболее приемлемые права доступа таковы: чтение и запись для
владельца и чтение для всех остальных — 644. Для того чтобы иметь возможность
7
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
«заходить» в каталог, для него необходимо выставить права
и на исполнение, поэтому для каталогов следует выставлять 755.
доступа
Для смены прав доступа в РНР предназначена функция chmod(), которая имеет
следующий синтаксис:
bool chmod(string filename, int mode).
Функция принимает в качестве первого параметра имя файла filename,
в качестве второго mode — восьмеричное число, задающее права доступа
к файлу.
Восьмеричное
число
в РНР
предваряется
0, например
0755.
Число
755 не является восьмеричным и будет интерпретироваться как десятичное,
а следовательно, права не будут изменены.
Если требуется изменить права доступа сразу ко всем файлам каталога,
следует воспользоваться следующим скриптом:
<?php
// Открываем каталог
$dir = opendir("dir_name");
//В цикле считываем его содержимое
while(($file = readdir($dir)))
{ // Если текущий объект является файлом, изменяем права доступа
if(is_file($file)) chmod($file, 0644); }
// Закрываем каталог
closedir($dir);
?>
5.4. Организация корректной работы с файлами через
Web-интерфейс
Для организации корректной загрузки файлов на сервер через Web-интерфейс
пользователя следует соблюдать определенный порядок. Хранение картинок
в базе данных не является хорошем стилем. Гораздо удобней хранить в базе лишь
пути к файлам изображений. В этом случае работа с файлами через Webинтерфейс предполагает управление двумя процессами, так как:
 во-первых, файл является объектом файловой системы Web-сервера;
 во-вторых, имя файла является записью в таблице базы данных, то есть
элементом контента.
Управление файлом как объектом файловой системы должно подчиняться
следующим правилам. После передачи запроса от браузера Web-серверу
с данными из формы с элементом типа file и загрузки параметров файла в массив
$_FILES в обработчике (php скрипте) следует предусмотреть следующие этапы
работы с файлом:
8
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
 проверку
размера
загружаемого
файла,
например:
if($_FILES["filename"]["size"] > 1024×30) — проверка ограничения размера
файла в 30 кбайт;
 проверку отсутствия одноименного файла в загружаемом каталоге, чтобы
случайно не перезаписать существующий файл, например:
$dir=opendir("path");
while(($file=readdir($dir))!==false)
{ if($file== $_FILES["filename"]["name"]) }
сlosedir($dir);
 проверку загрузки файла в указанный каталог, например:
if (copy ($_FILES["filename"]["tmp_name"],
"path/".$_FILES["filename"]["name"]))
При появлении ошибки на любом из перечисленных этапов следует
предусмотреть вариант действий скрипта, как минимум вывести сообщение
с соответствующим
уведомлением.
Например,
при
наличии
в каталоге
одноименного файла следует вывести сообщение, что файл с таким именем
существует и предложить либо перезаписать его, либо изменить имя
загружаемого файла и повторить загрузку.
При удалении файла вначале следует проверить наличие данного файла
в соответствующей директории при помощи функции file_exists(), а затем
выполнить удаление при помощи функции unlink() с проверкой ее исполнения.
Обновление файла предполагает вначале его удаление, а затем корректную
загрузку.
Управление файлом как элементом контента Web-страниц предусматривает
поиск, вставку, обновление и удаление записи с именем файла в таблице базы
данных при помощи соответствующих операторов php — select, insert, update
и delete. В Web-интерфейсе пользователя, которому дано право на загрузку
и обновление файлов, должны предусматриваться соответствующие элементы.
Необходимо помнить, что вносить изменения в записях таблицы базы данных
следует лишь после выполнения соответствующей операции с файлом
на файловой системе Web-сервера. Например, делать запись с именем нового
файла в таблице следует лишь после того, как файл будет корректно загружен.
Удалять запись с именем файла из таблицы нужно после того, как выполнена
проверка, что файл из соответствующего каталога удален.
При
формировании
каталога
с товарами
или
галереи
изображений
с рубрикацией
по разделам
следует
предусматривать
автоматическое
формирование каталогов для каждого нового раздела.
При ликвидации раздела необходимо рекурсивно удалить из соответствующего
каталога все файлы, а затем удалить сам каталог. Лишь после этого удаляется
запись из таблицы.
9
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
5.5. Оптимизация графических файлов
PHP приобрел всемирную популярность не только как удобное средство
автоматического формирования HTML-страниц и обработки форм, но и во многом
благодаря набору расширений, позволяющих выполнять другие задачи. Одним
из таких расширений является библиотека GD, предназначенная для работы
с растровыми изображениями. Для того, чтобы узнать наличие и используемую
версию графической библиотеки, рекомендуется воспользоваться функцией
phpinfo() и проанализировать в выведенной информации раздел «GD» (табл. 5.1).
Таблица 5.1. Пример раздела gd при наличии графической библиотеки gd
GD Support
enabled
GD Version
bundled (2.0.28 compatible)
FreeType Support
enabled
FreeType Linkage
with freetype
GIF Read Support
enabled
GIF Create Support
enabled
JPG Support
enabled
PNG Support
enabled
WBMP Support
enabled
XBM Support
enabled
В строке «GD Version» указан номер версии библиотеки. Если версия GD —
первая (например, 1.6), то рекомендуется обновиться до второй версии.
Вторая же версия тоже может быть разная. Следует обратить внимание на слово
«bundled». Его присутствие означает, что PHP собран с библиотекой
GD, поставляемой вместе с PHP: именно эту библиотеку рекомендуется
использовать, так как разработчики PHP исправили множество ошибок
и недочетов, присущих оригинальной GD. Если используется внешняя библиотека,
то слово «bundled» в строке «GD Version» отсутствует.
Из нижеследующих строк видно, какие графические форматы поддерживаются
данной конфигурацией библиотеки GD. В частности, работа с форматом GIF
поддерживается в режиме «только чтение» из-за проблем с лицензированием
используемого в GIF алгоритма сжатия изображения.
Библиотека GD обладает огромным набором функций для генерирования
изображений, а также позволяет изменять существующие изображения. Часто
перед Web-разработчиком стоит задача генерации уменьшенных копий
изображений для предварительного просмотра, можно даже сказать, что это —
одно из самых распространенных применений библиотеки GD.
В GD1 (первой версии), поддерживающей только изображения на основе
палитры, присутствовала лишь функция imagecopyresized(). Качество
10
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
уменьшенных изображений, генерируемых этой функцией, оставляло желать
лучшего: она работала с фиксированной палитрой, ограниченной 255 цветами.
Во
второй
версии
библиотеки,
с появлением
поддержки
TrueColor
и imagecreatetruecolor(), введена новая функция — 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 ),
где
 resource dst_image — идентификатор нового изображения;
 resource src_image — идентификатор исходного изображения;
 int dst_x, int dst_y — координаты (x,y) верхнего левого угла в новом
изображении;
 int src_x, int src_y — координаты (x,y) верхнего левого угла копируемого
блока существующего изображения;
 int dst_w, int dst_h — новые соответственно ширина и высота копируемого
блока;
src_w, int src_h —
копируемого блока.
 int
соответственно
ширина
и высота
исходного
Продемонстрируем работу с этой функцией. Предположим, у нас есть файл
original.jpg, допустим, 400×250 пикселей, и мы хотим создать его уменьшенный
вариант small.jpg — 100×60. Код скрипта может быть следующим:
<?php
define(’SOURCE’, ’original. jpg’); // исходный файл в виде константы
define(’TARGET’, ’small.jpg’); // имя файла для «превьюшки»
define(’NEWX’, 100); // ширина «превьюшки»
define(’NEWY’, 60); // высота «превьюшки»
// Определяем размер изображения с помощью функции getimagesize:
$size = getimagesize(SOURCE);
if ($size === false) die (’Bad image file!’);
// Читаем в память JPEG-файл с помощью функции imagecreatefromjpeg:
$source = imagecreatefromjpeg(SOURCE)
or die(’Cannot load original JPEG’);
// Создаем новое изображение
$target = imagecreatetruecolor(NEWX, NEWY);
// Копируем существующее изображение в новое с изменением размера:
imagecopyresampled($target,$source,0,0,0,0,NEWX,NEWY,$size[0],$size[1]);
// Сохраняем результат в JPEG-файле:
11
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
imagejpeg($target, TARGET, 100);
// Не забываем освободить память:
imagedestroy($target);
imagedestroy($source);
?>
В этом скрипте использованы также другие функции работы с изображениями.
Ниже рассмотрены две из них, требующие особых пояснений.
Функция getimagesize(), требуя в качестве своего параметра имя файла,
возвращает массив, содержащий (помимо прочего, о чем можно прочитать
в документации), ширину $size[0] и высоту $size[1] указанного изображения.
Кстати, для ее использования не требуется наличие библиотеки GD, так как она
работает непосредственно с заголовками графических файлов. В случае, если
формат файла не распознан, getimagesize возвращает false.
Функция генерации графических файлов imagejpeg() сохраняет результат
в JPEG-файле, ее синтаксис:
bool imagejpeg ( resource image [, string filename [, int quality]] )
Обязательным
параметром
этой
функции
является
идентификатор
изображения. Функция может выводить результат своей работы не только
в браузер, но и в файл. Для этого следует указать имя файла в необязательном
втором параметре. Функция imagejpeg имеет и третий необязательный
параметр — качество изображения. В примере установлено максимальное
качество — 100.
Приведенный скрипт простой, непропорциональность размеров исходного
и результирующего изображений может приводить к его искажениям. Для
устранения этого дефекта обычно в скрипте предусматривается сравнение
размеров
исходного
и результирующего
изображений
и в случаи
их непропорциональности выполняется отсечение какой-то части изображения
или заливка фоном пустой стороны изображения.
Рассмотренным методом можно формировать изображения для фотогалерей
и каталогов товаров из цифровых фотографий, имеющих большой размер.
Выводы
1. Загрузка файлов на Web-сервер через Web-интерфейс пользователя
реализуется при помощи HTML-форм с элементами типа file.
2. На web-сервере характеристики загруженного файла доступны через
двумерный массив $_FILES.
3. При организации работы по загрузке файлов на Web-сервер необходимо
выполнять структурирование загружаемых файлов с распределением
их по соответствующим каталогам с соответствующими правами доступа,
для чего в php имеется ряд функций.
4. Для файлов наиболее приемлемые права доступа таковы: чтение и запись
для владельца и чтение для всех остальных — 644. Для того чтобы иметь
возможность «заходить» в каталог, для него необходимо выставить права
доступа и на исполнение, поэтому для каталогов следует выставлять 755.
12
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
5. Работа с файлами через Web-интерфейс предполагает управление двумя
процессами, так как, во-первых, файл является объектом файловой
системы Web-сервера; во-вторых, имя файла является записью в таблице
базы данных, то есть элементом контента.
6. При администрировании Web-ресурсов часто необходима автоматическая
оптимизация графических файлов, для чего в php введена новая
функция — imagecopyresampled(), обеспечивающая весьма достойное
качество уменьшенных изображений.
Вопросы для самопроверки
1. Какие атрибуты должны быть у HTML-формы для обеспечения загрузки
файла на Web-сервер?
2. Какие характеристики загруженного файла доступны через двумерный
массив $_FILES?
3. До какого
времени
на Web-сервере
хранится
загруженный
файл
в директории для временных файлов?
4. Какие функции php используются для работы с каталогами?
5. Как средствами php можно вывести содержимое каталога?
6. Как средствами php можно определить файл или каталог?
7. Какими способами можно ограничить размер файлов, загружаемых на Webсервер?
8. Как можно проверить существование файла?
9. Как можно изменить права доступа к файлу, каталогу?
10. Какова технология уменьшения размера графического файла?
13
Download