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

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

Тема Тема 55Организация файлового обмена с Организация файлового обмена с электронным порталомэлектронным порталом

1.Включение файлов в документ2.Создание файлов и работа с ними3.Загрузка файлов на сервер4.Работа с каталогами5.Корректная работа с файлами6.Оптимизация графических файлов

Цель темы –сформировать представление о технологии работы с файлами на Web-сервер

через интерфейсы пользователей портала

1

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

Протокол HTTP не поддерживает сохранение Протокол HTTP не поддерживает сохранение состояния, поэтому файлы в Web-приложениях состояния, поэтому файлы в Web-приложениях играют важную роль как средства хранения играют важную роль как средства хранения информационных данных между сеансами информационных данных между сеансами

include() и require() – включение файла в PHP-скрипт

Подавление ошибок: @include() – скрипт не останавливается

<?phpinclude ("second.php"); ?>

<?phpinclude ("second.php"); ?>

include_once() и require_once() include_once() и require_once() - позволяют - позволяют включить файл в документ только один развключить файл в документ только один раз

Путь к включаемому файлу:относительный

или от корня web-сервера: /home/proba/www/second.php

При сетевом пути – включается результат работы скрипта

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

Любая операция с файлами предваряется операцией Любая операция с файлами предваряется операцией открытия файла при помощи функции fopen(): открытия файла при помощи функции fopen():

fopen(filename, mode)

Закрытие файлов выполняется функцией fclose (fd):

r — открыть файл только для чтения; r+ — открыть файл для чтения и записи; w— создать новый пустой файл только для записи; w+— создать новый пустой файл для чтения и записи; а— открыть файл для дозаписи; а+ — открыть файл для дозаписи и чтения данных;

r — открыть файл только для чтения; r+ — открыть файл для чтения и записи; w— создать новый пустой файл только для записи; w+— создать новый пустой файл для чтения и записи; а— открыть файл для дозаписи; а+ — открыть файл для дозаписи и чтения данных;

В случае удачного открытия файла функция fopen () возвращает дескриптор файла, в случае неудачи — false, например:$fd = fopen("file.txt","w"); print($fd);

В случае удачного открытия файла функция fopen () возвращает дескриптор файла, в случае неудачи — false, например:$fd = fopen("file.txt","w"); print($fd);

Путь к файлу (абсолютное или относительное имя файла)

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

Запись в файл осуществляется функциями fputs () Запись в файл осуществляется функциями fputs () и fwrite () и fwrite ()

fputs(fd, str [, length])

Чтение содержимого открытого файла можно осуществить при помощи функции fread(fd, length)

<?php // Создаем файл для записи $fd = fopen ("file.txt","w"); // Записывааем в файл fwrite($fd, "Привет, студенты!"); //Закрываем файл fclose ($fd);?>

<?php // Создаем файл для записи $fd = fopen ("file.txt","w"); // Записывааем в файл fwrite($fd, "Привет, студенты!"); //Закрываем файл fclose ($fd);?>

Дескриптор файлаЗаписываемая в файл строка

количество символов в строке, которые должны

быть записаны

Дескриптор файла

Эта функция возвращает строку

длиной length байтов

filesize($filename)filesize($filename) – – количество байт в файле количество байт в файле

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

ФункцияФункция file() file() записывает содержимое файла в записывает содержимое файла в массив (каждая строка – элемент массива)массив (каждая строка – элемент массива)

Чтение и вывод содержимого файла по строкам:

<?php $content = file("file.txt"); foreach($content as $line) echo "$line<br>"; ?>

<?php $content = file("file.txt"); foreach($content as $line) echo "$line<br>"; ?>

Подсчёт количества строк в файле (в массиве):

<?php $content = file("file.txt"); echo count($content); ?>

<?php $content = file("file.txt"); echo count($content); ?>

Массив

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

bool file_exists(string filename) bool file_exists(string filename) – – проверка проверка существования файласуществования файла

<?php if ($fu = @unlink("file.txt")) print "файл удален" ; else echo "Ошибка удаления файла";?>

<?php if ($fu = @unlink("file.txt")) print "файл удален" ; else echo "Ошибка удаления файла";?>

Удаление файла: bool unlink(string filename)

int filesize(string filename) int filesize(string filename) – – размер файла в размер файла в байтахбайтах

string filetype(string filename) string filetype(string filename) – – тип файла: тип файла: file file - обычный файл- обычный файл, , dir dir – – каталог и т.п. каталог и т.п.

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

Для загрузки файлов на сервер необходима Для загрузки файлов на сервер необходима HTML-форма и HTML-форма и PHP-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>

<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>

Обязательный параметр

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

Характеристики загруженного файла доступны Характеристики загруженного файла доступны через двумерный массив через двумерный массив $_FILES :$_FILES :

$_FILES["filename"] ["name"] — содержит исходное имя файла на клиентской машине; $_FILES["filename"] ["size"] — содержит размер загруженного файла в байтах; $_FILES ["filename"] ["type"] — MIME-тип файла; $_FILES [ "filename" ] ["tmp_name"] —имя временного файла, в который сохраняется загруженный файл;$_FILES ["filename"]["error"] – код ошибки, появившейся при загрузке

$_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("Ошибка загрузки файла"); } ?>

<?php if (copy ($_FILES["filename"] ["tmp_name"], "temp/".$_FILES["filename"] ["name"])) { echo("Файл успешно загружен <br>"); } else { echo("Ошибка загрузки файла"); } ?>

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

Максимальный размер загружаемого файла Максимальный размер загружаемого файла можно также задать при помощи директивы можно также задать при помощи директивы upload_max_filesizeupload_max_filesize, значение которой по , значение которой по умолчанию равно 2 Мбайт: умолчанию равно 2 Мбайт:

if($_FILES["filename"]["size"] > 1024*3*1024) { exit("Размер файла превышает 3 мегабайта"); } if($_FILES["filename"]["size"] > 1024*3*1024) { exit("Размер файла превышает 3 мегабайта"); }

if($_FILES["filename"]["size"] > upload_max_filesize)if($_FILES["filename"]["size"] > upload_max_filesize)

Значение директивы upload_max_filesize можно

изменить в конфигурационном файле

php.ini

Максимально допустимый размер загружаемого файла в байтах можно передавать из той же формы при помощи скрытого поля с именем MAX_FILE_SIZE

<input type="hidden" name="MAX_FILE_SIZE" value="5000" ><input type="hidden" name="MAX_FILE_SIZE" value="5000" >

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

Создание каталога производится с помощью Создание каталога производится с помощью функции функции mkdir(): mkdir():

bool mkdir(string dirname, int mode)

Удаление каталога: bool rmdir(string dirname)

<?php if(mkdir("test", 0700)) echo "Каталог создан"; else echo "Ошибка создания каталога"; ?>

<?php if(mkdir("test", 0700)) echo "Каталог создан"; else echo "Ошибка создания каталога"; ?>

Строка с именем каталога

Права на каталог в восьмеричном виде

Функция Функция rmdir ()rmdir () удаляет только пустые каталоги, удаляет только пустые каталоги, для уничтожения непустого каталога для уничтожения непустого каталога необходимо предварительно удалить все необходимо предварительно удалить все файлы, содержащиеся в нем файлы, содержащиеся в нем

Для смены прав доступа используется функция chmod(), которая имеет следующий синтаксис: bool chmod(string filename, int mode)

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

Пример вывода содержимого текущего каталога : :

11

Открытие, чтение и закрытие каталога Открытие, чтение и закрытие каталога производится с помощью функцийпроизводится с помощью функций: :

int opendir(string path)string readdir(int dir)void closedir(dir)

<?php $dir = opendir("."); while (($file = readdir($dir)) !== false) echo "$file<br>"; closedir($dir); ?>

<?php $dir = opendir("."); while (($file = readdir($dir)) !== false) echo "$file<br>"; closedir($dir); ?>

Открываем текущий каталогВ цикле выводим

содержимое каталога

Закрываем каталог

array scandir (string dir [, int sortingr_order])

Тип сотировки: 1-по убыванию

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

Форма <input type="file" name="filename">Форма <input type="file" name="filename">

Загрузка параметров в массив $_FILESЗагрузка параметров в массив $_FILES

Проверка объема файла

Проверка загрузки файла

Проверка имени файла в каталоге

ошибкаошибка

ошибкаошибка

ошибкаошибка

if($_FILES["filename"]["size"] > 1024*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"]))

Алгоритм корректной загрузки файла на серверАлгоритм корректной загрузки файла на сервер

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

Форма с текстовыми полями и полем Форма с текстовыми полями и полем загрузки файлазагрузки файла

Запись данных в массивы Запись данных в массивы $_POST $_POST и и $_FILES$_FILES

Корректная загрузка файла при Корректная загрузка файла при помощи элементов массива помощи элементов массива $_FILES$_FILES

Запись данных в таблицы (в том числе Запись данных в таблицы (в том числе и путь к файлу)и путь к файлу)

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

Проверка наличия удаляемого файла Проверка наличия удаляемого файла --file_exists()file_exists(), а затем удаление - unlink() с , а затем удаление - unlink() с проверкой исполненияпроверкой исполнения

Удаление записи о файле в БДУдаление записи о файле в БД

Проверка наличия удаляемого файла, а Проверка наличия удаляемого файла, а затем удаление с проверкой затем удаление с проверкой результатарезультата

Корректная загрузка нового файлаКорректная загрузка нового файла

Обновление записи о файле в БДОбновление записи о файле в БД

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

15

Для работы с растровыми изображениями предназначенная библиотека 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 при наличии графической библиотеки

gd

<?php phpinfo(); ?> <?php phpinfo(); ?>

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

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);?>

<?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