Page 1 sur 1

Insertion image dans fichier.mht

Posté : 01 déc. 2008, 17:25
par Devcphpinvite
Bonjour,

dans le cadre d'un projet, j'utilise des modeles de document .mht (donf fichier web à fichier unique) dans quel je remplace des signets du genre %U% par des valeurs issus d'un formulaire.

je les enregistre au format .doc pour terminer.

Mon projet actuel a pour but d'inserer des images au sein de ce fichier.mht.Mais etant donné que le fichier .mht est unique je ne comprends pas la maniere dont sont enregistré les images.

Quelqu'un a t'il des sources idées sur ce genre de chose?le code à insérer concernant cette image...

merci à tous

Posté : 01 déc. 2008, 22:24
par Sékiltoyai
C'est enregistré dans un format proche des mails multipart. Je te conseillerais de t'inspirer des techniques de mailing avec pièce jointe pour l'appliquer au format mhtml.

Posté : 05 déc. 2008, 12:48
par Devcphpinvite
Merci pour ton aide, te sliens sont pas mal

mais si j'ai bien compris les seules lignes qui me sont utiles sont les suivantes :

Code : Tout sélectionner

//----------------------------------------------- //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML //----------------------------------------------- $frontiere = '-----=' . md5(uniqid(mt_rand())); //PIECE JOINTE //----------------------------------------------- $message .= 'Content-Type: image/jpeg; name="nom_du_fichier.jpg"'."\n"; $message .= 'Content-Transfer-Encoding: base64'."\n"; $message .= 'Content-Disposition:attachement; filename="nom_du_fichier.jpg"'."\n\n"; $message .= chunk_split(base64_encode(file_get_contents('nom_du_fichier.jpg')))."\n";
en effet, le code d'une image dans un fichier .mht est a peu pres le suivant:

Code : Tout sélectionner

<!--[if gte vml 1]> <v:shapetype id=3D"_x0000_t75" coordsize=3D"21600,21600" o:spt=3D"75" o:preferrelative=3D"t" path=3D"m@4@5l@4@11@9@11@9@5xe" filled=3D"f" stroked=3D"f"> <v:stroke joinstyle=3D"miter"/> <v:formulas> <v:f eqn=3D"if lineDrawn pixelLineWidth 0"/> <v:f eqn=3D"sum @0 1 0"/> <v:f eqn=3D"sum 0 0 @1"/> <v:f eqn=3D"prod @2 1 2"/> <v:f eqn=3D"prod @3 21600 pixelWidth"/> <v:f eqn=3D"prod @3 21600 pixelHeight"/> <v:f eqn=3D"sum @0 0 1"/> <v:f eqn=3D"prod @6 1 2"/> <v:f eqn=3D"prod @7 21600 pixelWidth"/> <v:f eqn=3D"sum @8 21600 0"/> <v:f eqn=3D"prod @7 21600 pixelHeight"/> <v:f eqn=3D"sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok=3D"f" gradientshapeok=3D"t" o:connecttype=3D"rect"/> <o:lock v:ext=3D"edit" aspectratio=3D"t"/> </v:shapetype> <v:shape id=3D"Image_x0020_0" o:spid=3D"_x0000_i1025" type=3D"#_x0000_t75" alt=3D"Comparatif.png" style=3D'width:453pt;height:246pt;visibility:visibl= e;mso-wrap-style:square'> <v:imagedata src=3D"NouveauDocumentMicrosoftOfficeWord_fichiers/image001.png"o:title=3D"Comparatif"/> </v:shape> <![endif]-->
et apres la derniere balise </html>

Code : Tout sélectionner

------=_NextPart_01C956C8.F3DF37B0 qui correspond à la frontiere dont tu me parlais Content-Location: file:///C:/8C7D4AA4/NouveauDocumentMicrosoftOfficeWord_fichiers/image001.png Content-Transfer-Encoding: base64 Content-Type: image/png

Posté : 05 déc. 2008, 14:14
par Sékiltoyai
Ouais voilà, tu as compris. Si tu as commencé à coder quelquechose, tu peux le poster.