Самоучитель по креативному веб-дизайну. Книга 4, стр.29

справа от элемента формы и в диалоговом окне «Выбор файла» («Choose File»)

выбрать файл для загрузки. Как Netscape Navigator (версии 3.0 и выше), так и

Internet Explorer (версии 4.0 и выше) поддерживают значение «file » для атрибу —

та type в начальном дескрипторе
.

После нажатия посетителем кнопки отправки формы (которая в приведенном примере помечена как «Загрузить») браузер передает файл, указанный в эле —

менте загрузки файла, на Web-сервер вместе с другими результатами формы.

PHP-сценарий, адрес которого содержится в атрибуте action дескриптора

(в приведенном примере это файл chptiOTipi7Upioad. php), сохраняет файл в каталоге на Web-сервере. Страница с элементом загрузки файла и РНР —

сценарий, используемый для сохранения файла на Web-сервере, находятся в ар —

хиве chptiOTipi7.zip, который можно выгрузить из сайта издательства русско —

язычной редакции ЭТОЙ КНИГИ (http://www. diasoft. kiev. ua).

Перед использованием формы выгрузки файла вызовите в РНР-сценарии фун —

кцию opendir(), необходимую для выбора существующего каталога, в который будет сохраняться файл, передаваемый браузером на Web-сервер. (Если каталог

не будет выбран явным образом, PHP-процессор поместит загружаемый файл в тот же каталог, в котором находится Web-страница, с помощью которой файл был загружен. Предположим, например, что файлы, передаваемые Web-браузе —

ром, необходимо сохранять в том же каталоге, в котором находится Web-страни —

ца загрузки файлов. Следующие PHP-операторы сначала пытаются открыть ката —

лог загружаемых файлов, и если он не существует, для создания каталога вызывается функция mkdir(), а затем повторно вызывается функция opendir():



if (!$handle = @opendir(«upload»))

{

mkdir («upload», 0666);

$handle = opendir(«upload»);

}

(Символ @ перед вызовом функции opendir о подавляет вывод РНР-процес — сором предупреждающих сообщений, в частности сообщения «Warning: Folder does not exist» («Предупреждение: каталог не существует»).)

. В функциях opendir о и mkdr о можно указывать как относительные, так и

абсолютные пути. В приведенном примере для открытия (и, при необходимости, создания) подкаталога «upload» в том же каталоге, в котором хранится Web-страни —

ца, выполняемая РНР-процессором, применяется относительная адресация.

PHP-сценарий работает с содержимым файла, который передается с помощью элемента загрузки файлов, равно как и с текстом и числами, содержащимися в результатах формы. Независимо от того, работает сценарий с содержимым файла или скалярным (т. е. строковым или числовым) значением, он ссылается на дан — ные, полученные от элемента формы с помощью переменной, имя которой полу — чено за счет помещения знака доллара ($) перед именем элемента формы. В

54 8 Глава 10. РНР4





приведенном примере атрибут name элемента загрузки файлов имеет значение upioadFiie. Таким образом, PHP-сценарий для ссылки на содержимое файла, путь к которому посетитель ввел в элементе upioadFiie формы, будет использо —

вать Переменную $uploadFile.

При передаче Web-серверу результатов заполнения формы, содержащей эле — менты загрузки файлов, Web-браузер передает в результатах формы не только со- держимое файла, но и его имя, тип и размер. PHP-процессор, в свою очередь,

уавтоматически сохраняет загруженный файл во временном каталоге на Web-серве —

ре и создает четыре переменных, которые PHP-сценарий может использовать при работе с выгруженным файлом. Имена этих четырех переменных образованы

от имени элемента формы, с помощью которого данный файл был загружен на сервер. В приведенном примере элемент загрузки файлов имеет имя upioadFiie. Таким образом, PHP-процессор создаст следующие переменные:

• $upioadFiie Полный путь к содержимому загружаемого файла на Web-сер —

вере (например, /tmp/php098XM0). Значение Переменной $uploadFile В

сценарии может использоваться для ссылки на содержимое файла.

• $upioadFiie name Имя загружаемого файла на компьютере посетителя.

• $upioadFiie_type MIME-тип выгружаемого файла, если он известен.

• $upioadFiie_size Размер файла в байтах.

Встроенная функция PHP move_upioaded_fiie() позволяет РНР-сценарию

перемещать файл из одного каталога в другой. Таким образом, в приведенном примере для перемещения загруженного Web-браузером файла в каталог, путь к которому содержится в переменной $dir, необходимо вызвать функцию

move_uploaded_file () Следующим образом:



move_uploaded_file($uploadFile, «$dir/$uploadFile name»);



Для вывода посетителю сообщения об успешном или неудачном перемеще — нии файла из временного буфера результатов заполнения формы на сервере в другой, постоянный каталог, имя которого содержится в переменной $dir, вызо —

вите функцию move upioad_fiie() в операторе if, как показано в следующем примере:



if (move_uploaded_file ($uploadFile, «$dir/$uploadFile_name») )

echo «OK: файл \»$uploadFile_jname\» успешно загружен.»;

else

echo «ОШИБКА: сбой при загрузке файла \»$uploadFile name\».»;



ПРИМЕЧАНИЕ При написании сценариев, которые позволяют посетителям загружать файлы в каталоги Web-сайта необходимо убедиться, что сценарий не допускает загрузку файлов с расширениями, используемыми для обозначения файлов, которые Web-сервер дол — жен передавать на обработку PHP, ASP, Perl или другим процессорам серверных сценариев. Если этого не сделать, посетитель может нанести непоправимый вред сайту. Например, заг —

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.62
  • 28.02.2011">Руководство по actionscript. часть 5, стр. 136
  • 07.03.2011">Руководство по actionscript. часть 4, стр. 102
  • 23.02.2011">Руководство по actionscript. часть 7, стр. 036
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.23
  • 26.02.2011">Руководство по actionscript. часть 6, стр. 068
  • 16.03.2011">Руководство по actionscript. часть 3, стр. 010
  • 27.02.2011">Руководство по actionscript. часть 6, стр. 030
  • 03.10.2010">Как сделать матовую кожу?
  • 04.03.2011">Руководство по actionscript. часть 5, стр. 038
  • 19.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.27
  • 23.02.2011">Руководство по actionscript. часть 7, стр. 041
  • 04.03.2011">Руководство по actionscript. часть 5, стр. 053
  • 14.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.82
  • 07.01.2010">Кинетическая типографика
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...