1 / 16

Разработка электронного портала

Цель темы –сформировать представление о технологии работы с файлами на Web -сервер через интерфейсы пользователей портала. Тема 5 Организация файлового обмена с электронным порталом. Включение файлов в документ Создание файлов и работа с ними Загрузка файлов на сервер Работа с каталогами

Download Presentation

Разработка электронного портала

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Цель темы –сформировать представление о технологии работы с файлами на Web-сервер через интерфейсы пользователей портала Тема 5 Организация файлового обмена с электронным порталом Включение файлов в документ Создание файлов и работа с ними Загрузка файлов на сервер Работа с каталогами Корректная работа с файлами Оптимизация графических файлов Разработка электронного портала

  2. 1. Включение файлов в документ Протокол HTTP не поддерживает сохранение состояния, поэтому файлы в Web-приложениях играют важную роль как средства хранения информационных данных между сеансами Путь к включаемому файлу: относительный или от корня web-сервера: /home/proba/www/second.php При сетевом пути – включается результат работы скрипта include() и require() – включение файла в PHP-скрипт <?php include ("second.php"); ?> Подавление ошибок: @include() – скрипт не останавливается include_once() и require_once() - позволяют включить файл в документ только один раз

  3. 2. Создание файлов и работа с ними Путь к файлу (абсолютное или относительное имя файла) Любая операция с файлами предваряется операцией открытия файла при помощи функции fopen(): fopen(filename, mode) r — открыть файл только для чтения; r+ — открыть файл для чтения и записи; w— создать новый пустой файл только для записи; w+— создать новый пустой файл для чтения и записи; а— открыть файл для дозаписи; а+ — открыть файл для дозаписи и чтения данных; В случае удачного открытия файла функция fopen () возвращает дескриптор файла, в случае неудачи — false, например: $fd = fopen("file.txt","w"); print($fd); Закрытие файловвыполняется функцией fclose (fd):

  4. Запись в файл количество символов в строке, которые должны быть записаны Записываемая в файл строка Запись в файл осуществляется функциями fputs () и fwrite () Дескриптор файла fputs(fd, str [, length]) <?php // Создаем файл для записи $fd = fopen ("file.txt","w"); // Записывааем в файл fwrite($fd, "Привет, студенты!"); //Закрываем файл fclose ($fd); ?> Эта функция возвращает строку длиной length байтов Дескриптор файла Чтение содержимого открытого файла можно осуществить при помощи функции fread(fd, length) filesize($filename)– количество байт в файле

  5. Получение массива из файла Функция file() записывает содержимое файла в массив (каждая строка – элемент массива) Чтение и вывод содержимого файла по строкам: Массив <?php $content = file("file.txt"); foreach($content as $line) echo "$line<br>"; ?> Подсчёт количества строк в файле(в массиве): <?php $content = file("file.txt"); echo count($content); ?>

  6. Основные атрибуты файла 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 "Ошибка удаления файла"; ?>

  7. 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> Обязательный параметр

  8. Двумерный массив $_FILES Характеристики загруженного файла доступны через двумерный массив $_FILES : $_FILES["filename"] ["name"] — содержит исходное имя файла на клиентской машине; $_FILES["filename"] ["size"] — содержит размер загруженного файла в байтах; $_FILES ["filename"] ["type"] — MIME-тип файла; $_FILES [ "filename" ] ["tmp_name"] —имя временного файла, в который сохраняется загруженный файл; $_FILES ["filename"]["error"] – код ошибки, появившейся при загрузке <?phpif (copy ($_FILES["filename"] ["tmp_name"], "temp/".$_FILES["filename"] ["name"])) { echo("Файл успешно загружен <br>"); } else { echo("Ошибка загрузки файла"); } ?> После завершения работы скрипта временный файл будет удален! Необходимо его скопировать в другое место до завершения работы скрипта

  9. Ограничение объема загружаемого файла 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" >

  10. 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 () удаляет только пустые каталоги, для уничтожения непустого каталога необходимо предварительно удалить все файлы, содержащиеся в нем

  11. 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])

  12. Алгоритм корректной загрузки файла на сервер 5. Корректная работа с файлами Форма <input type="file" name="filename"> $dir=opendir("path"); while(($file=readdir($dir))!==false) { if($file== $_FILES["filename"] ["name"]) } сlosedir($dir); Загрузка параметров в массив $_FILES if($_FILES["filename"]["size"] > 1024*30) Проверка объема файла ошибка if (copy ($_FILES["filename"] ["tmp_name"], "path/".$_FILES["filename"] ["name"])) Проверка имени файла в каталоге ошибка Проверка загрузки файла ошибка Файл успешно загружен

  13. Прием от клиента текстовых данных и рисунка Форма с текстовыми полями и полем загрузки файла Запись данных в массивы $_POST и $_FILES Корректная загрузка файла при помощи элементов массива $_FILES Запись данных в таблицы (в том числе и путь к файлу)

  14. Удаление файла рисунка Проверка наличия удаляемого файла -file_exists(), а затем удаление - unlink() с проверкой исполнения Удаление записи о файле в БД Обновление файла рисунка Проверка наличия удаляемого файла, а затем удаление с проверкой результата Корректная загрузка нового файла Обновление записи о файле в БД

  15. 6. Оптимизация графических файлов Для работы с растровыми изображениями предназначенная библиотека GD <?phpphpinfo();?> Пример раздела gd при наличии графической библиотеки gd

  16. Создание уменьшенных изображений Для создания уменьшенных изображений используется функция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],$size[1]); imagejpeg($target, small.jpg, 100); ?> Создается новое пустое изображение в памяти Копируется изображение с преобразованием размера Результат выводиться в jpg файл с наивысшим качеством 100

More Related