Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
ACCUEIL JAVASCRIPT FORUM JAVASCRIPT F.A.Q JAVASCRIPT TUTORIELS JAVASCRIPTS SOURCES JAVASCRIPT LIVRES AJAX

Upload multiple de fichiers

Date de publication : 14/12/2007

Cette page sera sans doute amenée à être complétée. Elle fournit pour le moment les explications basiques du fonctionnement de ma source javascript permettant d'envoyer plusieurs fichiers à un script serveur en n'utilisant qu'un seul input apparent.



I. Introduction

Le Web 2.0, on ne le présente plus... tout le monde connaît maintenant le principe : une interface tournée vers l'utilisateur et donc des plus agréables possibles.
En parlant d'interface, comment gérez-vous l'envoi multiple de fichiers vers votre serveur ? Les solutions minimales sont souvent peu élégantes : inputs de type "file" à répétition, applet Java, etc.

Je vous propose ici une source Javascript qui permet d'uploader autant de fichiers que l'utilisateur désire, avec un unique input apparent et une gestion de la liste des fichiers à uploader.


II. Fonctionnement

Je n'entrerai pas dans les détails du fonctionnement de ce script car il est très simple. Mais afin que vous compreniez le code (qui est tout de même commenté !), voici le principe général de cette petite source :

Tout d'abord, un premier constat : pour uploader plusieurs fichiers, il nous faut plusieurs input -un par fichier- et un formulaire de type "multipart/form-data". Il n'est donc pas question de ne créer qu'un unique input et de tout gérer avec celui-ci. Pour enrayer tout de suite certaines questions redondantes, il n'est pas possible avec les mécanismes AJAX d'envoyer un fichier à un serveur, car javascript -pour des raisons évidentes de sécurité- n'a pas accès au disque dur du client.

L'idée du script est donc de créer un input pour chaque fichier à uploader, mais d'en n'afficher toujours qu'un seul. Pour cela, on crée un premier input au chargement de la page, auquel on associé un événement onchange.
Cet événement sera déclenché lorsque l'utilisateur aura choisi un fichier à uploader. A ce moment, le nom du fichier est ajouté à la liste d'upload et l'input est caché. Il est immédiatement remplacé par un nouvel input, prêt à recevoir un nouveau fichier.

Supprimer un fichier consiste simplement à supprimer l'élément input correspondant et à enlever le nom du fichier de la liste d'upload.

Les inputs étant ajoutés dans le formulaire, un simple bouton de type submit permet d'envoyer le tout. Le script PHP fourni dans l'exemple récapitule les fichiers envoyés pour attester du bon fonctionnement du script.

J'ai ajouté quelques effets Scriptaculous dans ce script afin de rendre le tout plus agréable. N'oubliez donc pas d'inclure les bibliothèques prototype et scriptaculous à vos propres fichiers !


III. Test et téléchargement

Vous trouverez le script en ligne à des fins de test, ici.

Vous pouvez télécharger le script complet avec une page d'exemple d'utilisation ici : MultiUpload.zip (serveur FTP de secours)



Valid XHTML 1.1!Valid CSS!

Les sources présentées sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2007 Olivier Lance. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Responsables bénévoles de la rubrique Javascript : Denis Cabasson et Brice Franzoia - Contacter par EMail :
Vos questions techniques : forum d'entraide Javascript - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.