Учебник РНР
Назад Глава 19. Обработка загрузки файлов Вперёд

Поддержка метода PUT

PHP поддерживает HTTP-метод PUT, используемый такими клиентами, как Netscape Composer и W3C Amaya. PUT-запросы намного проще, чем загрузка файлов и выглядят примерно так:

PUT /path/filename.htm HTTP/1.1

Нормально это должно означать, что удалённый клиент хотел бы сохранить содержимое /path/filename.htm в вашем web-дереве. Для Apache или PHP, очевидно, не очень-то здорово разрешить любому автоматически перезаписывать любые файлы в вашем web-дереве. Поэтому, чтобы обрабатывать такие запросы, вы должны сначала указать вашему web-серверу, что вы хотите, чтобы определённый PHP-скрипт обрабатывал запрос. В Apache вы делаете это директивой Script. Она может быть размещена почти в любом месте файла конфигурации вашего Apache. Обычно это в блоке <Directory> или, возможно, в блоке <Virtualhost>. Строка типа этой выполняет трюк:

Script PUT /put.htm

Это указывает серверу Apache, что нужно отправить все PUT-запросы по URI, которые совпадают с контекстом, в котором вы поместили эту строку в скрипт put.htm. Это предполагает, разумеется, что PHP включён для расширений .htm и что PHP активен.

В файле put.htm вы можете тогда записать что-нибудь такое:

<?php copy($PHP_UPLOADED_FILE_NAME,$DOCUMENT_ROOT.$REQUEST_URI); ?>

Это скопирует файл в место, запрошенное удалённым клиентом. Вы, возможно, захотите выполнить какую-нибудь проверку и/или аутентифицировать пользователя, прежде чем выполнить копирование файла. Трюк состоит в том, что, когда PHP видит запрос методом PUT, он сохраняет загруженный файл во временной директории, как и при работе методом POST. Когда запрос завершается, этот временный файл удаляется. Поэтому ваш РНР-скрипт обработки PUT должен скопировать файл куда-нибудь. Имя этого временного файла находится в переменной $PHP_PUT_FILENAME, а предполагаемое имя файла назначения можно найти в $REQUEST_URI (может называться иначе на не-Apache web-серверах). Это имя файла, специфицированное удалённым клиентом. Вам не нужно прослушивать этот клиент. Вы можете, например, скопировать все загруженные файлы в специальную директорию.

Назад Оглавление Вперёд
Загрузка нескольких файлов Вверх Использование удалённых файлов


HIVE: All information for read only. Please respect copyright!
Hosted by hive йца: йХЕБЯЙЮЪ ЦНПНДЯЙЮЪ АХАКХНРЕЙЮ