PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Compression GZIP pour Xémélios pour intégration piece jointe dans un fichier XML...
Compression GZIP pour Xémélios pour intégration piece jointe dans un fichier XML...
Iniciado por cthery, 10,abr. 2019 13:57 - 1 respuesta
Publicado el 10,abril 2019 - 13:57
Bonjour,
J'ai un souci de compression de pièce jointe dans un fichier XML sur Windev 23
Le cahier des charges indique : Fichier d'origine (binaire ou XML) compressé avec Gzip puis converti en base 64 :
Recette, Dépense et Budget concernés.
La génération du fichier XML se passe très bien, par contre dans l(import du fichier dans Xemlios le fichier joint ne passe pas : "Not in GZIP format".
at java.util.zip.GZIPInputStream.readHeader(Unknown Source)
at java.util.zip.GZIPInputStream.<init>(Unknown Source)
at java.util.zip.GZIPInputStream.<init>(Unknown Source)
at fr.gouv.finances.cp.xemelios.pesv2.PesFacturePiXslHrefTransformer.transform(PesFacturePiXslHrefTransformer.java:145)
at fr.gouv.finances.dgfip.xemelios.importers.DefaultImporter.importFile(DefaultImporter.java:411)
at fr.gouv.finances.dgfip.xemelios.importers.EtatImporteur.doInBackground(EtatImporteur.java:109)
at fr.gouv.finances.dgfip.xemelios.importers.EtatImporteur.doInBackground(EtatImporteur.java:52)
at org.jdesktop.swingworker.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at org.jdesktop.swingworker.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
//--------------------------------------------------------------------------------
J'ai des exemples de fichiers XML résultats qui passent, et effectivement
le début du contenu est différent :
<PJ>-<Contenu>
<Fichier MIMEType="application/xml">H4s... ( sur 1 seule ligne)
alors que le mien est :
<PJ>-<Contenu>
<FichierMIMEType="application/xml">SDRzSUFBQUFBQUFBQysxZFczUGl1QktlNTF (plusieurs lignes)
//-----------------------------------------------------------------
Voici mon code,
j'ai aussi essayé avec GZIP, 7ZIP, même problème...
Quelqu'un a t il une idée ?


cMonDoc..Encodage = "ISO-8859-1"
cMonDoc.PES_Aller.PES_PJ[1].PJ.Contenu.Fichier:MIMEType="application/xml" // "text/xml"
zipCrée("MonGZ",Remplace(sNomFicher,".xml",".gz"))
SI zipAjouteFichier("MonGZ",sNomFicher,zipAucun)=0 ALORS
zipFerme("MonGZ")
bufPJ_Contenu est un Buffer =fChargeBuffer(Remplace(sNomFicher,".xml",".gz"))
cMonDoc.PES_Aller.PES_PJ[1].PJ.Contenu.Fichier=Encode(bufPJ_Contenu,encodeBASE64)
SINON
Erreur("Erreur dans la récupération de la pièce-jointe"+RC+ErreurInfo())
RETOUR
FIN
...
SI XMLValidDocument(cMonDoc) ALORS
XMLSauve(cMonDoc, "c:\helios\BUDGET-"+gc_BudgetEdite+"-"+EDF.exe+"-"+EDF.bud+".xml" ,XMLDocumentDéfaut)
SI ErreurDétectée ALORS
Erreur("Une erreur s'est produite pendant la sauvegarde : "+ErreurInfo(errComplet))
SINON
Info("Fichier XML sauvegardé)
FIN
SINON
Erreur("Le fichier XML généré n'est pas valide :"+ ErreurInfo())
FIN
Publicado el 12,abril 2019 - 15:06
En poursuivant mes tests, l'expression "ENCODE" de la ligne qui affecte la valeur du contenu est bonne: (commence par H4s...)

cMonDoc.PES_Aller.PES_PJ[1].PJ.Contenu.Fichier=Encode(bufPJ_Contenu,encodeBASE64)encode

c'est l'affectation de Windev qui est erronée ou c'est la définition du fichier XSD qui est intégrée dans le projet qui pose problème ?

J'ai fait le test suivant :
Buf_Contenu est un Buffer= "123467890"
cMonDoc.PES_Aller.PES_PJ[1].PJ.Contenu.Fichier =Buf_Contenu

et en générant mon fichier XML j'obtiens :
<Contenu>
<Fichier MIMEType="application/xml">MTIzNDY3ODkw</Fichier>

Au lieu de ma chaine "1234567890" ????
Donc la compression n'est pour moi pas en cause...
Quelqu'un a t il une suggestion ?