Caractéristiques <<< |
Chargements de fichiers par méthode POST | Explication sur les messages d'erreurs de chargement de fichiers >>> |
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.1 Chargements de fichiers par méthode POST
PHP est capable de recevoir des fichiers émis par un navigateur conforme à la norme RFC-1867 (c'est-à-dire Netscape Navigator 3 ou supérieur, Microsoft Internet Explorer 3 avec un patch de Microsoft, ou supérieur sans le patch). Cette fonctionnalité permet de charger des fichiers textes ou binaires. Avec l'authentification et les fonctions de manipulation des fichiers, vous avez un contrôle total sur le chargement et la gestion des fichiers chargés.
Notez bien que PHP supporte aussi le chargement par la méthode PUT comme dans le navigateur Netscape Composer et les clients Amaya du W3C. Reportez-vous au chapitre sur le support de la méthode PUT . Un écran de chargement de fichiers peut être constitué en créant un formulaire de la manière suivante :
Les variables définies après un téléchargement de fichiers diffèrent beaucoup de version en version. La variable $_FILES existe depuis PHP 4.1.0. Le tableau $HTTP_POST_FILES existe depuis PHP 4.0.0. Ces tableaux contiennent toutes les données sur les fichiers téléchargés. L'utilisation de la variable $_FILES est recommandée. Si la directive PHP register_globals vaut on , les variables reliées existeront aussi. register_globals vaut par défaut off depuis PHP 4.2.0 . Le contenu du tableau $_FILES est détaillé dans notre exemple ci-dessous. Notez que l'un suppose que le nom de la variable du fichier téléchargé est userfile , tel que défini dans le formulaire ci-dessus.
Lorsque register_globals vaut on dans le php.ini , des variables supplémentaires sont rendues disponibles. Par exemple $userfile_name vaut $_FILES['userfile']['name'] , $userfile_type vaut $_FILES['userfile']['type'] , etc... Gardez à l'esprit que depuis PHP 4.2.0, register_globals vaut off par défaut. Il n'est pas prudent de supposer que cette directive vaut on . Le fichier téléchargé sera stocké temporairement dans le dossier temporaire du système, à moins qu'un autre dossier soit fourni avec la directive upload_tmp_dir du php.ini . Le dossier par défaut du serveur peut être changé dans l'environnement via la variable TMPDIR . Modifier la valeur de cette variable avec la fonction putenv dans un script PHP sera sans effet. Cette variable d'environnement peut aussi être utilisée pour s'assurer que d'autres opérations fonctionnent aussi sur les fichiers téléchargés.
Le script PHP qui reçoit le fichier chargé doit pouvoir gérer le fichier de manière appropriée. Vous pouvez utiliser la variable $file_size pour recaler tous les fichiers qui sont trop gros ou trop petits. Vous pouvez utiliser la variable $file_type pour recaler les fichiers qui n'ont pas le bon type. Quelques soient les actions, ce script doit pouvoir supprimer le fichier du dossier temporaire, ou le déplacer ailleurs. Depuis PHP 4.2.0, vous pouvez utiliser l'information dans $_FILES['userfile']['error'] et adapter votre politique en fonction des code d'erreur . Quelque soit votre politique, vous devriez soit effacer le fichier du dossier temporaire, soit le déplacer. Le fichier sera automatiquement effacé du fichier temporaire à la fin du script, s'il n'a pas été déplacé ou renommé. |
<< | Chargements de fichiers par méthode POST | >> |
Caractéristiques | Gestion des chargements de fichier | Explication sur les messages d'erreurs de chargement de fichiers |