Uploader plusieurs fichiers avec barre de progression ajax

Soyez le premier à donner votre avis sur cette source.

Vue 43 674 fois - Téléchargée 4 500 fois

Description

j'ai peut-être mal cherché sur le net, mais je n'ai pas trouvé de code me permettant de faire ca en ASP.NET / C# :
- Uploader plusieurs fichiers d'un coup (multi upload)
- Avoir une barre de progression montrant le niveau de l'upload (et d'autres infos)
- Pouvoir annuler l'upload à tout moment.
- Et le plus important, il ne doit y avoir rechargement de page visible pour l'utilisateur.

Voilà donc tout ce que permet ma source :P
Au final, ca fait bien *_*

(Notez qu'il faut pas trop chercher le côté esthétique de la chose, il faudrait rajouter des images ...)

Source / Exemple :


Tout est dans le zip ...

Conclusion :


Techniquement, le fonctionnement global est simple :

+ Pour faire du multi-upload :
> Du javascript côté client génère des input file, et cache celui que l'on vient de remplir.
Merci à Cyril qui m'a donné ce blog (http://blogs.codes-sources.com/themit/archive/2005/07/08/9062.aspx) pour un petit problème que j'avais...

+ Pour faire la barre de progression :
> Là, c'est un peu plus compliqué... une iframe est caché dans la fenêtre et les fichiers sont postés dedans et c'est un thread qui s'occupe de récupérer les fichiers.
Un système de communicaction est alors mis en place (via une variable de session) pour échanger les données entre le thread et la page qui fait des appels ajax.

+ Pas de rechargement de la page :
> Grâce à javascript (ajax) et l'iframe cachée, aucun chargement n'est visible !

---------
2,3 trucs pourraient être améliorés :
Afficher d'autres informations avec la barre de progression : temps d'attente ...
Embellir un peu le tout !
Forefox marche moins bien que IE7..........

---------
Tester sous :
Firefox 2.0.0.1 : marche mais c'est pas tout à fait ca encore.
IE 7 : pas de problème à signaler, fluide chez moi.

--------
Merci de vos commentaires, optimisations ...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
mardi 31 août 2010
Statut
Membre
Dernière intervention
2 septembre 2010

Tout simplement magnifique

grand merci à toi
Messages postés
2
Date d'inscription
mardi 20 avril 2004
Statut
Membre
Dernière intervention
30 mars 2009

Bonjour,
J'ai un petit problème avec ce code concernant les fichiers de plus de 78ko.
Je suis sur serveur 2003 IIS6 .Net 3.0. Dès que le fichier dépasse les 78ko, le fichier ne s'upload pas, il apparait tout de même, mais pèse 0ko. Un message se créé dans le journal des
erreur: id 5000 P9 system.objectdisposedexception
il ne sagit pas d'un probleme du webconfig (poid ou timeout). J'ai cherché sur le net, mais il semblerait que cet id soit une exception non géré. si quelqu'un à une idée, je suis prenneur!
Merci d'avance!
Essaye de rajouter cela dans ton web.config : requestLengthDiskThreshold="8192"

<httpRuntime maxRequestLength="50000" executionTimeout="600" requestLengthDiskThreshold="8192" />

++
Messages postés
1
Date d'inscription
mardi 24 janvier 2006
Statut
Membre
Dernière intervention
13 mai 2010

Bonjour,

voici en script full JS avec un sample php ( server side )
http://developers.sirika.com/mfu/

Je vous laisse juger
Messages postés
4
Date d'inscription
mardi 28 février 2006
Statut
Membre
Dernière intervention
21 février 2009

Savez-vous si il y a des failles de sécurité importante avec ce script ? Car je l'ai mis en ligne vendredi et ce matin en faisant un checkup de mon site, j'ai remarqué des dizaines de fichiers identiques "pirates" (pages "vous avez été hacker par XXXXX") qui avaient été uploadés dans des répertoires où ils n'auraient vraiment pas du se trouver ?

Sinon il avait l'air pas mal...
Messages postés
92
Date d'inscription
lundi 8 mars 2004
Statut
Membre
Dernière intervention
12 avril 2010

Merci, c'est super !
Afficher les 17 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.