Manuel PHP

Précédent

 

Suivant

Chargement par méthode PUT

PHP supporte la méthode HTTP PUT utilisée par les navigateurs tels que Netscape Composer et W3C Amaya. Les requêtes de type PUT sont beaucoup plus simples que les chargements de fichiers, et elles ressemblent à :

PUT /path/filename.html HTTP/1.1
    

Normalement, cela signifie que le client distant va sauver les données qui suivent dans le fichier: /path/filename.html de votre disque. Ce níest évidemment pas très sécurisé de laisser Apache ou PHP écraser níimporte quel fichier de líarborescence. Pour éviter ceci, il faut díabord dire au serveur que vous voulez quíun script PHP donné gère la requête. Avec Apache, il y a une directive pour cela : Script. Elle peut être placée níimporte où dans le fichier de configuration díApache. En général, les webmestres la place dans le block <Directory>, ou peut être dans le bloc <Virtualhost>. La ligne suivante fera très bien líaffaire :

Script PUT /put.php3
    

Elle indique à Apache díenvoeyr les requêtes de chargement par méthode PUT au script put.php3. Bien entendu, cela présuppose que vous avez activé PHP prend en charge les fichiers de type .php3, et que PHP est actif.

Dans le fichiers.php3 file vous pouvez mettre ceci :

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

Ce script va copier le fichier chargé par le client distant à líendroit désiré. Vous aurez probablement à effectuer quelques tests et des authentifications díutilisateur, avant díeffectuer cette copie. Le seul piège est que lorsque PHP recoit un chargement par méthode PUT, il va enregistrer le fichier dans le dossier temporaire, tout comme avec la méthode POST-method. A la fin de la requête, le fichier sera effacé. Ce qui fait que ce script doit placer le fichier chargé quelque part. Le nom du fichier temporaire est placé dans la variable globale $PHP_PUT_FILENAME, et la destination prévue est placée dans $REQUEST_URI (ces noms peuvent changer díune configuration díApache à líautre). Cette destination est celle qui est demandée par le client, et vous níavez pas à obéir aveuglément au client. Vous pourriez par exemple, déplacer le fichier dans un dossier de chargement.

Précédent

Sommaire

Suivant

Chapitreloading multiple files

Chapitre

Connection handling