PHP. Руководство по PHP. 2005Поддержка метода PUT Руководство по PHPПред. Глава 38. Загрузка файлов на сервер След. Поддержка метода PUT Поддержка метода PUT была изменена при переходе от PHP 3 к PHP 4. В PHP 4 вы должны использовать стандартный поток ввода для чтения файла, передаваемого методом HTTP PUT. Пример 38-4. Сохранение загруженного при помощи HTTP PUT файла в PHP 4 <?php /* Данные PUT находятся в потоке stdin */ $putdata = fopen("php://stdin", "r"); /* Открываем файл для записи */ $fp = fopen("myputfile.ext", "w"); /* Читаем данные блоками размером в 1 KB и записываем их в файл */ while ($data = fread($putdata, 1024)) fwrite($fp, $data); /* Закрываем потоки */ fclose($fp); fclose($putdata); ?> Замечание: Вся документация, приведенная ниже, касается исключительно PHP 3. PHP поддерживает загрузку файлов методом HTTP PUT, который используется в клиентах Netscape Composer и W3C Amaya. Запрос PUT выглядит проще, чем в случае обыкновенной загрузки файла на сервер: PUT /path/filename.html HTTP/1.1 Такой вызов означает, что удаленный клиент хотел бы сохранить файл под именем /path/filename.html в дереве каталогов вашего веб-сервера. Очевидно, что возможность клиента автоматически перезаписывать файлы вашего веб-сервера при помощи Apache или PHP не является хорошим решением. Поэтому для того, чтобы обрабатывать такие запросы, вам необходимо указать веб-серверу PHP-скрипт, которому вы доверяете их обработку. В веб-сервере Apache вы можете сделать это, используя директиву Script. Она может находиться практически в любом месте конфигурационного файла Apache. Как правило, эта директива расположена внутри блока <Directory> или же внутри блока <Virtualhost>. Сама запись выглядит следующим образом: Script PUT /put.php Это указывает веб-серверу Apache на необходимость перенаправлять по указанному адресу все PUT-запросы, контекст которых совпадает с контекстом, в которым вы разместили эту строку. Предполагается, что файлы с расширением.php обрабатываются, как PHP-скрипты, и что сам PHP установлен и работает. Внутри вашего файла put.php file вы можете поместить что-нибудь похожее на это: <?php copy($PHP_UPLOADED_FILE_NAME, $DOCUMENT_ROOT . $REQUEST_URI); ?> Приведенный код скопирует файл в место, запрошенное клиентом. Возможно, вы захотите выполнить какую-либо проверку и/или аутентифицировать пользователя, прежде чем выполнять копирование. Трюк состоит в том, что когда PHP видит PUT-запрос, он сохраняет полученный файл во временной папке, как и при загрузке методом POST. По окончании обработки запроса временный файл удаляется. Поэтому ваш PHP-скрипт, обрабатывающий PUT-запрос, должен скопировать куда-либо полученный файл. Имя временного файла хранится в переменной $PHP_PUT_FILENAME, а предполагаемое имя файла можно найти в переменной $REQUEST_URI (может быть другим на веб-серверах, отличных от Apache). Запрашиваемое имя файла указывается удаленным клиентом. Вы не обязаны следовать его указаниям. Например, вы можете скопировать все загруженные файлы в отдельный каталог. Пред. Начало След. Загрузка на сервер нескольких файлов Уровень выше Работа с удаленными файлами Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.Ваше письмо×⇪