Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Atteint de JavaScriptite Aiguë [Cyril Durand]

Expert ASP.net Ajax et WCF, Cyril Durand parle dans son blog de point techniques sur ASP.net, ASP.net Ajax, JavaScript, WCF et .net en général. Cyril est également consultant indépendant, n'hésitez pas à le contacter pour de l'assistance sur vos projets

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    Consultant freelance, n'hésitez pas à me contacter pour vos projets .net : architecture, accompagnement, formation, ...

    View Cyril Durand's profile on LinkedIn
    hit counters


    Expertise Commerce server et BizTalk

upload avec Ajax

L'upload via une application Web n'est jamais une chose joli, dans beaucoup des cas on envoie le fichier en même temps que le formulaire de la page, ce qui pour effet de faire une nouvelle requete sur toute la page. En plus on est jamais sûr que le transfert se passe vraiment correctement, etc ...

Bon, si c'est que ca, on peut très bien imaginer, que javascript va s'en occuper En effet depuis qu'on a découvert que javascript savait faire des requêtes (AJAX) on en met de partout ;). Oui ! Ajax est la solution, mais comment envoyer des données par Ajax ?

La solution se trouve dans cet excellent article : http://robloche.free.fr/javascript/tuto_xhr/tuto_xhr.html#section_04 (qui est pour moi le meilleur des articles sur ajax) on voit donc que l'on peut facilement t transmettre des données via la méthode POST par Ajax.
Le problème c'est qu'on NE PEUT PAS avoir le contenu du fichier selectionné, nous voila donc pas très avancé :(

Heureusement, certaines personnes se creusent la tête ;)

La solution http://sean.treadway.info/demo/upload (allez essayer c'est super ;))

J'ai pas encore regardé en détails comment il fait cela, mais la solution passe par une iframe pour envoyer le flux, et ensuite pour savoir l'etat de l'avancement, c'est des requetes Ajax qui demandent au serveur ou en est l'upload. En simplifié, lorsque vous cliquez sur le bouton "envoyer" vous envoyer le formulaire contenu dans une iframe, le serveur commence à recevoir le fichier, et en même temps, javascript fait des reqêtes à intervalle régulier pour savoir ou est l'avancement du transfert.

Sympathique non ?

Vous pouvez aussi me dire, qu'envoyer un fichier à la fois c'est pas trés rapide ...

Alors regarder ici : http://the-stickman.com/web-development/javascript/upload-multiple-files-with-a-single-file-element/

Posted: samedi 1 octobre 2005 17:39 par cyril
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

cyril a dit :

pas mal !!
la seule chose qui gène un peu c'est l'iframe...
mais bon...tant que ça marche :d
# octobre 1, 2005 18:25

cyril a dit :

J'ai pas encore pris le temps d'analyser le code, mais on doit surement pouvoir arriver à écrire l'iframe en javascript. (pour des raisons d'accessibilité)
# octobre 1, 2005 18:32

cyril a dit :

j'aime bien... je pense que ca va me servir ;)
# octobre 1, 2005 20:02

cyril a dit :

C'est top !!!!!
J'ai vite fait regarder, il me semble que l'iframe n'est là que pour l'effet k2000 pendant le chargement du fichier, ce n'est pas elle qui fait le chargement.
C'est vraiment top ce truc.
Les sources, c'et du ruby...
Cyril, es tu déjà en train de préparer la version .Net ?

TiK
# octobre 2, 2005 10:26

cyril a dit :

Evidemment que je vais regarder pour faire la version .net :p

Mais je sais pas si je vais mettre le control en standalone ou alors avec le reste de mon framework :) donc faut pas etre pressé :p
# octobre 2, 2005 11:07

cyril a dit :

bon courage... moi je bloque sur le serveur qui récupère les informations du fichier, je sais intercepter le début de la réception et la fin, mets entre les deux, nada !

toute aide serait bienvenue
# octobre 3, 2005 10:31

cyril a dit :

Yep, je pense aussi que c'est la partie la plus difficile :(

car l'instance de la page est créer une fois la requete receptionné donc trop tard :s faudrais regarder du coté des httpmodule je pense, en tout cas faudra taper vachement bas dans asp.net

et je ne sais pas exactement qui receptionne la requete ...

mais si quelqu'un sait/trouve comment avoir l'avancement du fichier, ce serait cool :)
# octobre 3, 2005 10:45

cyril a dit :

Pour répondre à nurgle, l'iframe sert à envoyer le fichier.

En fait (merci Aurélien ;)) il y a un target sur le form qui fait que lorsqu'on submit le formulaire on envoie la réquete dans l'iframe, en meme temps on fait plein de petite requete sur une autre page pour savoir l'avancement, et entre les 2 pages il y a une variable session qui circule.
# octobre 3, 2005 18:25
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- TechDays 2010 Genève : Retrouvez-moi pour une session sur la Haute disponibilité et le ScaleOut avec SQL Server par SQL Server vu par Christian Robert le il y a 8 heures et 21 minutes

- [MIX10] Keynote deuxième journée – Internet Explorer 9, Html5, Visual Studio 2010, OData par Atteint de JavaScriptite Aiguë [Cyril Durand] le 03-17-2010, 19:40

- Certifications beta .NET 4 par Kévin Gosse le 03-17-2010, 19:33

- [Mix 2010] – Microsoft Translator Technology Preview V2 par RedoBlog - The .NET Gentleman !!! le 03-17-2010, 18:53

- Lancement en Preview de Cyclone lors des TechDays 2010! par Blog de Frédéric Queudret le 03-17-2010, 16:30

- [WP7] Je ne veux pas d’un nouvel iPhone par Le blog de FremyCompany le 03-17-2010, 13:11

- [WF4] Pourquoi utiliser le ContentPresenter dans l’ActivityDesigner? par Blog de Jérémy Jeanson le 03-17-2010, 07:54

- [Mix 2010] – Telechargez Internet Explorer 9 en Preview ! par RedoBlog - The .NET Gentleman !!! le 03-17-2010, 00:58

- [MIX 2010] – Keynote Day 2 online : Windows Internet Explorer 9, jQuery, OData et Dallas CTP2 ! par RedoBlog - The .NET Gentleman !!! le 03-17-2010, 00:18

- [Mix 2010] – Retour d’expérience développement Seesmic sur Windows Phone 7 par RedoBlog - The .NET Gentleman !!! le 03-16-2010, 23:44