[Image] Воскресенье, 22.12.2024, 23:19 [Image]
SEO, технологии, игры, IT новости
[Image] Главная Регистрация Вход [Image]
[Image] Приветствую Вас, Гость · RSS [Image]
Меню сайта

Форма входа
 Блог
Главная » 2011 » Январь » 10 » Управление загрузкой файлов
10:27
Управление загрузкой файлов
НА ЗАМЕТКУ
Чтобы загрузка файлов работала правильно в РНР, должны быть корректно установлены множество конфигурационных директив в файле php. i n i . Особенно это касается директив file_uploads, uploads_max_filesize, upload_tmp_dir и post_max_size, которые влияют на возможности РНР, связанные с загрузкой файлов. Более подробное описание этих директив содержится в руководстве по РНР.

РНР позволяет загружать файлы из HTML-форм посредством элементов загрузки файлов. При организации загрузки файлов из HTML-формы следует помнить о некоторых соглашениях, относящихся к самому дескриптору <FORM>.
Чтобы загрузка произошла успешно, атрибут ENCTYPE дескриптора <FORM> должен быть установлен в MIME-значение multipart/form-data, а атрибут METHOD — в значение POST. Пример HTML-формы, которая загружает файл в сценарий upload.php, показан в листинге 4.14.

Листинг 4.14. HTML-код для загрузки файлов по протоколу HTTP
<FORM METHOD="POST" ACTION="upload.php" ENCTYPE="multipart/form-data">
<INPUT TYPE="file" NAME="myfile"><BR>
<INPUT TYPE="submit" УАШЕ="Загрузить файл">
</FORM>
НА ЗАМЕТКУ
Для указания максимального размера загружаемого файла может использоваться специальный скрытый элемент с именем MAX_FILE_SIZE. Это ограничение размера файла устанавливается на клиентской стороне и может не работать на некоторых клиентах. В таких случаях потребуется реализовать проверку размера за счет установки значения директивы upload_max_filesize.

При отправке формы из листинга 4.14 файл будет загружен на Web-сервер и сохранен во временном каталоге, указанном директивой upload_tmp_dir в файле
php. ini. Затем РНР создает суперглобальную переменную $_FILES и, в данном случае, заносит в массив $_FILES ключ myfile. Значением этого ключа будет другой массив, заполненный информацией о загруженном файле. В частности, массив, помещенный в $_FILES [ 'myfile' ], имеет значения ключей, приведенные в табл. 4.7.
НА ЗАМЕТКУ
Следующий массив ключей может содержать или не содержать значения, в зависимости от конкретных обстоятельств загрузки файла. Например, ключ type может быть пустым, если браузер не предоставляет MIME-информации. '

Таблица 4.7. Ключи, создаваемые для файла при загрузке
Ключ Описание
name Имя файла на клиентской машине.
type МШЕ-тип файла, если он известен.
size Размер загружаемого файла в байтах.
tmp_name Временное имя, присвоенное файлу самим РНР при загрузке на сервер.
error Целое значение, представляющее ошибку, случившуюся при загрузке файла.

Если в процессе загрузки файла возникла ошибка, элементу $_FILES [' myfile'][' error' ] будет присвоено целочисленное значение, представляющее тип ошибки и равное одной из констант, перечисленных в табл. 4.8.
 

Таблица 4.8. Константы ошибок загрузки файлов в РНР
Константа Описание
UPLOAD_ERR_OK Ошибок нет.
UPLOAD_ERR_INT_SIZE Размер загружаемого файла превысил максимальный,
который задан в php. i n i .
UPLOAD_ERR_FORM_S IZE Размер загружаемого файла превысил максимальный,
указанный в скрытом элементе MAX_FILE_SIZE.
UPLOAD_ERR_PARTIAL Загрузка была прервана, файл загружен частично.
UPLOAD_ERR_NOFILE Файл не был загружен.

Если файл загружен успешно, он должен быть перемещен из его текущего расположения (временного каталога) в место постоянного размещения. Если файл не был перемещен, он будет удален по окончании выполнения РНР-сценария.
Из соображений безопасности, прежде чем перемещать файл из временного каталога в новый, должна быть вызвана функция is_uploaded_file () для подтверждения того, что файл действительно был загружен с помощью РНР. После того, как загрузка подтверждена, с помощью функции move_uploaded_file () можно переместить загруженный файл из его текущего расположения в новое. Чтобы переместить файл в каталог назначения, РНР должен иметь права записи в этот каталог. В главе 21 можно найти подробную информацию о применении функций, имеющих отношение к загрузке файлов и работе с правами доступа.
НА ЗАМЕТКУ
Функция move_uploaded_file () предполагает, что файл находится в каталоге, указанном в конфигурационной директиве upload_tmp_dir.

Код в листинге 4.15 обрабатывает файл, загруженный кодом из листинга 4.14.
Листинг 4.15. Выполнение загрузки файла в РНР

Категория: Все о PHP | Просмотров: 1746 | Добавил: witkom8382 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024
Категории
Оптимизация сайта [592]
Создание сайтов [355]
Заработать в интернете [508]
Технологии [48]
Полезное [392]
Услуги и сервисы [317]
Автоблог [105]
Скрипты для Ucoz [39]
Движок на сайт [10]
Все о Joomla и Drupal [20]
Все о PHP [91]
Поиск
Пользовательский поиск
Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0
Seo сайт, технологии продвижения, мета теги, оптимизация сайтов, новости сео, Скрипты, Ucoz

Рейтинг@Mail.ru