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...
Techniques / Download fichier HTML+ressouces dans un message MIME avec CDONT
- Forcer le téléchargement d'un fichier au format MIME en ASP :
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 :
- Envoyer le contenu de l'article dans un fichier zip
- Générer un fichier PDF à la volée
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...
Archive Web, fichier seul (*.mht)
------=_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 %>
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'dypso'@'172.20.245.55' (using password: YES) in /mnt/110/sdb/3/1/dypso/include/tools.php on line 106
Impossible de se connecter : Access denied for user 'dypso'@'172.20.245.55' (using password: YES)