Services webmasters
Partenaires
Jeux concours gratuits
 
Télécharger plusieurs fichiers simultanément
<<<
Chargement par méthode PUT Caractéristiques
>>>

6.3 Gestion des chargements de fichier
6 Caractéristiques
 Manuel PHP

Chargements de fichiers par méthode POST
Explication sur les messages d'erreurs de chargement de fichiers
Erreurs classiques
Télécharger plusieurs fichiers simultanément
->Chargement par méthode PUT

6.3.5 Chargement par méthode PUT

Le support de la méthode PUT a été modifié entre PHP 3 et PHP 4. En PHP 4, il faut utiliser le flux d'entrée standard pour recevoir le contenu du fichier.

Sauver un fichier par méthode PUT en PHP 4

<?php
/* Les données via la méthode PUT arrivent dans stdin */
$putdata = fopen("php://stdin","r");

/* Ouvre un fichier pour écriture */
$fp = fopen("myputfile.ext","w");

/* Lit les données par bloc de 1ko
   et les écrit dans le fichier */
while ($data = fread($putdata,1024))
  
fwrite($fp,$data);

/* Ferme les flux */
fclose($fp);
fclose($putdata);
?>

Note

Toute la documentation ci-dessous s'applique à PHP 3 uniquement.

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.php HTTP/1.1

Normalement, cela signifie que le client distant va sauver les données qui suivent dans le fichier: /path/filename.php 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 bloc <Directory> , ou peut être dans le bloc <Virtualhost> . La ligne suivante fera très bien l'affaire :

Script PUT /put.php3

Elle indique à Apache qu'il doit envoyer les requêtes de chargement par méthode PUT au script put.php3 . Bien entendu, cela présuppose que vous avez activé PHP pour qu'il prenne en charge les fichiers de type .php3, et que PHP est actif.

Dans le fichier put.php3 , vous pouvez mettre ceci :


<?php
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 l'identification de l'utilisateur, avant d'effectuer cette copie. Le seul piège est que lorsque PHP reçoit un chargement par méthode PUT, il va enregistrer le fichier dans le dossier temporaire, tout comme avec la méthode POST . 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.

<< Chargement par méthode PUT >>
Télécharger plusieurs fichiers simultanément Gestion des chargements de fichier Caractéristiques
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -