Anglais Francais Prosygma Italie
-
    hebergement asp
prosygma_logo

Techniques

Cette section permet de regrouper un ensemble de techniques ou de scripts qui ont l'originalité d'arriver à résoudre une difficulté avec le moindre effort ou qui sont particulièrement efficaces...


/ Download fichier HTML+ressouces dans un message MIME avec CDONT

Cette technique est assez particulière, j'ai du l'utiliser notamment pour sauvegarder des messages au format HTML dans une base SQL Server pour une application cliente. C'est une prmière utilisation du script, mais il permet notamment lorsque le besoin s'en fait sentir d'envoyer le contenu d'un tutorial ou d'un article avec l'ensemble de ses ressources (images/feuilles de style) en un seul envoi... D'ordinaire pour réaliser ce type d'opérations deux solutions sont envisagées :

En lisant les articles précédents comme 'convertir un fichier HTML en PDF à la volée ', il est bien sur possible d'envoyer le contenu désiré sous le format PDF , ce qui ne pose pas de problèmes car les images, font (,etc.) sont intégrées à la page générée... Le problème vient du fait que les feuilles de styles quant à elles ne sont pas supportées. Conclusion : la mise en page des articles devra dans ce cas se faire en utilisant des tableaux.

En ce qui concerne la seconde méthode, l'utilisation d'un composant permettant d'effectuer des fichiers ZIP s'impose, à moins d'effectuer des mises à jour régulières et d'effectuer manuellement le zip des fichiers (HTML+IMAGES+CSS).
Dans un prochain article, je proposerais en téléchargement, un composant permettant d'effectuer des fichiers zip, à la volée, ou d'exploiter d'anciennes archives au format zip pour en explorer le contenu!

La technique suivante quant à elle est bien plus simple à mettre en oeuvre, en effet elle se base sur la dll CDONT qui permet d'envoyer des mails depuis ASP. Parmi les possibilité de cette dll, il est aussi possible d'envoyer des messages au format HTML.

Pour vous figurer le résultat attendu, il vous suffit d'ouvrir votre navigateur Internet Explorer sur une page web, et de cliquer sur l'onglet :

Enregistrer Sous...

Parmi la liste des extentions possibles, une devrait retenir votre attention :

Archive Web, fichier seul (*.mht)

Le résultat de l'enregistrement, se trouve être un fichier au format MIME contenant donc l'ensemble des ressources attachées dans un seul et même document! Chacun des éléments est séparés par une ligne de boundary et ainsi les images sont intégrées au fichier et encodées en base64 comme ci-après :

------=_NextPart_000_0067_01C558BA.194A7AC0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-ID: <002001c558a9$5262afe6$_CDOSYS2.0>
Content-Disposition: inline

R0lGODlhDgEUAJECANPi6b/P1v///wAAACH5BAEAAAIALAAAAAAOARQA
AAL/lI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2TQP6zut4
FQgKEcIgsfgpBh7Kn9PRi+6ekaZBuTwgk9uGlQo29BJjQVk8HZ8PUsCi
bRis1/BPHs0Du1d/t0YFraGNmXGQ+hm2OaDCNco5dB0d7Xn95cn1/XXF
qMgISsh22PjIsPaphbTH2tr3hYVJB8vZifN55mjK+xgKmti7MGmpWVtZ
V0xZqXz7NAgdhaBbqiANPF09LLsaewzY3A1Yl+xss6gajU667quawL3M
k1Vun0SC7ABKvIgxh7aCFsEyevwIMqTIkSRLmjyJMqXKlSxRFgAAOw==

...

De même pour les feuilles de styles (CSS) :

------=_NextPart_000_0067_01C558BA.194A7AC0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-ID: <001f01c558a9$5262afe6$_CDOSYS2.0>
Content-Disposition: inline

/* generic styles */=0A=
body, input, td, select, textarea {=0A=
font-family: Verdana, Arial, Helvetica, sans-serif;=0A=
font-size: 11px;=0A=
color: #666666;=0A=
background-color: #FFFFFF;=0A=
margin-top: 0px;=0A=
margin-right: 0px;=0A=

...

Dans l'exécution d'un script il est donc possible de créer un message HTML constitué de la source d'une page, même en ligne(!), et de stocker le résultat de ce message dans un objet Stream avant de l'enregistrer sur le server. Le fichier ainsi créé peut être renvoyer au poste client par un simple download .

Le résultat du script suivant sera donc l'ouverture d'une boîte de dialogue de type "Enregistrer le document", proposant le téléchargement d'une page html au format d'archive web que l'oin peut aisément ouvrir avec Internet Explorer ou bien stocker en base de données pour réutilisation ou encore garder pour avoir la base d'un message mail au format HTML :

<%

dim message, conf, stream 
set message = CreateObject("CDO.Message") 
set conf = CreateObject("CDO.Configuration") 
set message.Configuration = conf 

'Création du message HTML à partir 
'd'une page en ligne
message.CreateMHTMLBody "http://dypso.free.fr" 

'Récupération du contenu du message dans un flux
set stream = message.GetStream() 

'Sauvegarde du résultat sur le serveur
stream.SaveToFile server.mapPath("dypso.mht")
Stream.Close
Set Stream = Nothing


Response.buffer = true
with response
 .Clear
 .ContentType = "message/rfc822""
 .Charset = "UTF-8"
 .AddHeader "Content-Disposition", _
    "attachment;filename=dypso.mht"
	  
Set Stream = Server.CreateObject("ADODB.Stream")	  
Const adTypeBinary = 1
Stream.Open
Stream.Type = adTypeBinary
Stream.LoadFromFile server.mapPath("dypso.mht")

 .BinaryWrite stream.Read
	    

   'Vider le contenu de la réponse contenu dans le buffer
 .Flush
end with

Stream.Close
Set Stream = Nothing

set message= nothing
set conf=nothing
%>