Lorsque l’on conçoit un formulaire permettant l’upload de fichier, il est souvent souhaité de pouvoir indiquer à l’utilisateur la progression du chargement que ce soit sous forme graphique ou texte.Seul hic, PHP ne permet pas dans sa version « standard » une telle approche. Lors du traitement d’un upload de fichier, la variable superglobale _FILES n’est renseignée qu’une fois le fichier complètement chargé sur le serveur et au chaud dans le répertoire temporaire. Impossible donc de l’utiliser pour accéder aux informations du fichier en cours de chargement, et notamment du nom qui lui a été affecté dans le répertoire temporaire.
C’est très bien, mais ne peut-on rien y faire ?
Plusieurs solutions sont possibles :
- Utiliser un autre language de CGI pour récupérer et afficher les informations du téléchargement
- Utiliser un applet java ou Flash (il y en a des très biens)
- Utiliser PHP (et ajax bien sûr pour mettre à jour l’affichage)
Oui, vous avez bien lu, on peut utiliser PHP. Pour les vieilles versions, il est nécessaires d’appliquer un patch à l’installation PHP, mais à partir de la version 5.2.0, le support pour le module APC est intégré dans la distribution. Pour les plus courageux, le suivi est possible en PHP4, mais je trouve quand même plus simple de passer à PHP 5.2. Un italien a aussi décrit une méthode sans installer APC. L’inconvénient est qu’elle se base sur un suivi de l’apparition de fichiers temporaires ce qui la rend complètement inutilisable lorsque de nombreux fichiers sont créés quasi simultanément.
La suite du message décrit comment utiliser APC pour récupérer les informations sur le déroulement d’un upload.
(Lire la suite…)
