7.5 Gestion des chargements de fichier
7 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
|
7.5.1 Chargements de fichiers par méthode POST
Cette fonctionnalité permet aux personnes de télécharger à la fois du texte
et des fichiers binaires. Avec les fonctions d'identifications et de
manipulation de fichiers de PHP, vous avez le contrôle total pour définir
qui a le droit de télécharger mais aussi ce qui sera fait du fichier une
fois qu'il sera téléchargé.
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).
PHP supporte aussi le chargement par la méthode PUT comme dans le
navigateur
Netscape Composer
et
Amaya
du W3C. Reportez-vous au chapitre sur le
support de la
méthode PUT .
| Formulaire de chargement de fichier | |
Un formulaire de téléchargement de fichiers peut être construit
en créant un formulaire spécifique comme ceci :
|
| Note | |
Assurez-vous que votre formulaire de téléchargement de fichier contienne
enctype="multipart/form-data"
sinon,
le fichier se sera pas téléchargé.
|
La variable globale $_FILES existe
depuis PHP 4.1.0 (Utilisez
$HTTP_POST_FILES
si vous utilisez une
version plus ancienne). Ce tableau devrait contenir toutes les informations du fichier téléchargé.
Le contenu du tableau $_FILES
est détaillé dans notre exemple ci-dessous. Notez que l'on suppose que le nom
de la variable du fichier téléchargé est
userfile
, tel que
défini dans le formulaire ci-dessus, mais peut être n'importe quel nom.
-
$_FILES['userfile']['name']
-
Le nom original du fichier, tel que sur la machine du client web.
-
$_FILES['userfile']['type']
-
Le type MIME du fichier, si le navigateur a fourni cette information.
Par exemple, cela pourra être
"image/gif"
.
Ce type mime n'est cependant pas vérifié du côté de PHP et donc,
ne prend pas sa valeur pour se synchroniser.
-
$_FILES['userfile']['size']
-
La taille, en octets, du fichier téléchargé.
-
$_FILES['userfile']['tmp_name']
-
Le nom temporaire du fichier qui sera chargé sur la machine serveur.
-
$_FILES['userfile']['error']
-
Le code d'erreur
error code
associé au téléchargement de fichier.
Cet élément a été introduit en PHP 4.2.0
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.
| Validation de téléchargement de fichiers | |
Voyez aussi les fonctions
is_uploaded_file
et
move_uploaded_file
pour plus d'informations.
L'exemple suivant va télécharger un fichier venant d'un formulaire.
|
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
$_FILES['userfile']['size']
pour recaler
tous les fichiers qui sont trop gros ou trop petits. Vous pouvez utiliser
la variable
$_FILES['userfile']['type']
pour écarter
les fichiers qui n'ont pas le bon type, mais l'utilise uniquement pour une série de
vérifications, car cette valeur est complètement sous le contrôle du client
et n'est pas vérifiée du côté de PHP.
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.
Si aucun fichier n'est sélectionné dans le formulaire, PHP retournera
0
dans
$_FILES['userfile']['size']
et rien du tout dans
$_FILES['userfile']['tmp_name']
.
Le fichier sera automatiquement effacé du fichier temporaire
à la fin du script, s'il n'a pas été
déplacé ou renommé.
| Envoie d'un tableau de fichiers | |
PHP supporte les tableaux en HTML
ainsi qu'avec les fichiers.
|
|