begin process at 2008 05 17 06:52:45
1 173 919 membres
51 nouveaux aujourd'hui
13 973 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UPLOADER PLUSIEURS FICHIERS AVEC BARRE DE PROGRESSION AJAX


Information sur la source

Catégorie :Formulaires Source .NET ( DotNet ) Classé sous : upload, uploader, ajax, multi, aspnet Niveau : Initié Date de création : 05/01/2007 Vu / téléchargé: 19 409 / 2 161

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

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

  • Tout est dans le zip ...
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 ...
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de tikrimi le 05/01/2007 23:53:10

    Bonsoir,

    C’est effectivement très sympathique comme résultat… mais je reste toujours sur ma faim pour le chargement de plusieurs fichiers en html pur. Je rêve toujours de pouvoir sélectionner plusieurs fichiers d’un coup, ou un répertoire, ou de faire un glisser déposer comme ou peut le faire dans les sites de photos en installant un activex… elle va évoluer quand cette balse <input type= "file"/> !!!

  • signaler à un administrateur
    Commentaire de Kenshin07 le 15/02/2007 10:18:35

    Ta fonction AddFile() en JavaScript est MAGNIFIQUE !!
    Ce code me sauve la vie !!!!!

    Merci Clemox

    Kenshin07

  • signaler à un administrateur
    Commentaire de cybergoustaf le 14/03/2007 13:01:48

    Bonjour,

    Etant un néophite, je vais surement poser une question idiote:

    J'ai chargé le projet dans visual studio 2005, mais quand je lance la compilation j'ai cette erreur:

    "le type ou le nom d'espace 'Uploading' est introuvable"

    pourtant, mon fichier Uloading.cs se trouve bien dans le sous répertoire App_Data du projet.

    Quelqu'un aurai-t-il une solution?

    Merci d'avance

  • signaler à un administrateur
    Commentaire de cybergoustaf le 14/03/2007 13:20:46

    Oups, je viens de comprendre tout seul...j'avais mis le fichier Uloading.cs dans App_Data et non App_Code...désolé pour le dérangement

  • signaler à un administrateur
    Commentaire de JPP80FR le 21/04/2007 09:37:52

    bonne application
    petite amelioration "GetData()" pouvoir la possibilité de paramètre l'endroit où Enregistre les fichiers

  • signaler à un administrateur
    Commentaire de gfpl le 18/05/2007 11:01:57

    arggg si qq a ca ne php :( pq 90% du ajax est asp?

  • signaler à un administrateur
    Commentaire de halim1212 le 25/05/2007 14:38:09

    M'étant penché sur le sujet dernièrement et ayant essayé d'utiliser ton programme, je voulais faire les commentaires suivant concernant la barre de progression (car c'est l'aspect que je recherchais):

    Ton approche ne me semble pas la bonne, je n'ai pas creusé la question en profondeur, mais il me semble que les fichiers sont déjà uploadés (ou bufferisé) sur le serveur quand tu executes la procédure GetData(). Ton programme permet d'avoir une barre de progression sur la copie des fichiers du repertoire temporaire à l'endroit spécifié (copie que tu ne fais pas d'un bloc mais avec un buffer qui permet de faire ça par itération).

  • signaler à un administrateur
    Commentaire de halim1212 le 25/05/2007 15:08:48

    J'oubliais, la solution sur laquelle je me suis dirigée, et l'on trouve plusieurs sources sur le sujet, c'est de passer par un module http qui traite HttpWorkerRequest.

  • signaler à un administrateur
    Commentaire de deeloc_015 le 30/08/2007 11:46:39

    Bonjour,
    J'ai exécuté ton code, il marche nickel. Par contre j'ai un petit soucis, je m'explique:
    Quand je transforme le default.Aspx en un webcontrol .ascx et que je l'intègre dans un default.aspx, il ne marche plus. ON affiche à chaque fois que j'ai un problème au niveau de mon ViewState, du style :

    "Échec de la validation MAC Viewstate. Si cette application est hébergée par une batterie de serveurs ou un cluster, assurez-vous que la configuration <machineKey> spécifie le même validationKey et le même algorithme de validation. AutoGenerate ne peut pas être utilisée dans un cluster."
    [HttpException (0x80004005): Impossible de valider les données.]

    J'suis un p'tit peu embeté, aura tu une idée?!
    Merci

  • signaler à un administrateur
    Commentaire de small44 le 17/10/2007 13:18:36

    Bonjour,
    Je cherche a permettre a l'utilisateur uploader tout le contenue d'un dossier (ce sont que des fichier texte) mais en ne renseignent que le nom du dossier.
    Du coup, il me faut recuperer tout les fichiers 1 par 1 et les uploader. Mais la je bloque car je ne veut qu'un seul item fileupload.
    Auriez vous une idée ?

  • signaler à un administrateur
    Commentaire de Dany Frez le 24/10/2007 02:05:53

    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!

  • signaler à un administrateur
    Commentaire de ghostfile le 24/04/2008 10:10:50

    Ca a lair super sympa, mais je ne comprends absolument pas comment utiliser ce code...
    peut on me dire la procédure...c'est frustrant apres temps d'heure de recherche... ^^

    Biz

Ajouter un commentaire

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS