Salut à tous,
Sur un site web fait avec une DLL Isapi, et j'ai une procédure d'envoi de mail directement depuis le site. Et comme le traitement peut être relativement long, j'aimerais afficher une page qui se rafraichit au fur et à mesure de l'avancement des envois.
En résumé, voici la procédure d'envoi :
et voici le code de la page wait.html qui est généré par la DLL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 procedure TWBM.WBMenvoiAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); begin // On procéde à un envoi de message pour chaque ligne du fichier CSV for lig:=0 to length(RecLigne)-1 do begin // Création de la page HTML avec le compteur de progression Genere_Page_Wait('Envoi des mails en cours : '+IntToStr(lig+1)+' / '+IntToStr(length(RecLigne)),True); // Envoi du message Envoi_Mail; end; end;
Pour afficher cette page Wait, j'ai essayé tout un tas de formules différentes, et aucune ne fonctionne proprement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <HTML> <HEAD> <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> </HEAD> <BODY> <META HTTP-EQUIV="REFRESH" CONTENT="1; URL=http://fcsm.devoci.fr/wait.html"> <font face="arial"> <CENTER> <BR><BR> Envoi des mails en cours : 13 / 84 </CENTER> </font> </BODY> </HTML>
J'ai essayé tout ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 response.SendResponse; response.SendRedirect(VGL_Domaine+'/wait.html');
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Request.WriteString('<META HTTP-EQUIV="refresh" CONTENT="0; URL='+VGL_Domaine+'/wait.html">');
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2response.Content:=VGL_Domaine+'/wait.html';
avant la boucle for, et dans la boucle for
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Request.WriteString('Envoi des mails en cours : '+IntToStr(lig+1)+' / '+IntToStr(length(RecLigne))+'<BR>');
J'ai même essayé de passer desTstrings dans des Streams.
La seule syntaxe qui fonctionne à peu près, c'est
avant la boucle for
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 response.SendRedirect(VGL_Domaine+'/wait.html');
Mais ce qui s'affiche au lancement, c'est
Ce qui d'une part est trés moche, et d'autre part oblige l'utilisateur à cliquer sur le lien pour voir le compteur s'afficher et se rafraichir tout seul.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 HTTP/1.1 302 Object Moved Connection: close Date: Thu, 21 Aug 2008 09:52:38 GMT Content-Length: 160 Content-Type: text/html Location: http://fcsm.devoci.fr/wait.html Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET X-Powered-By: ASP.NET Objet déplacé Ce document peut être consulté ici
Bref, je cherche un moyen propre d'afficher une page de progression pendant un traitement long coté serveur.
Merci pour voter aide.
Fred
Partager