Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Powerscripts
  •  » [RESOLU] Problème utilisation Base64.dll avec gros fichier

#1 23-05-2013 09:24:39

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

[RESOLU] Problème utilisation Base64.dll avec gros fichier

Bonjour,

J'avais développé l'utilisation de la dll Base64.dll avec la fonctionnalité DecodeToFile pour décoder un fichier en base64.

Tout fonctionne correctement, tant que le fichier n'est pas trop gros 90ko par exemple.

Avec un fichier qui fait 1100ko et situé sur un serveur distant, le decode ne se passe pas bien, et le fichier final qui est un pdf n'est pas entier et ne peut s'ouvrir car il est 'endommagé'.

Auriez-vous une idée pour contourner ce problème ?

Merci d'avance,

Hors ligne

 

#2 23-05-2013 10:28:40

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Problème utilisation Base64.dll avec gros fichier

wazou1812 a écrit:

Bonjour,

J'avais développé l'utilisation de la dll Base64.dll avec la fonctionnalité DecodeToFile pour décoder un fichier en base64.

Tout fonctionne correctement, tant que le fichier n'est pas trop gros 90ko par exemple.

Avec un fichier qui fait 1100ko et situé sur un serveur distant, le decode ne se passe pas bien, et le fichier final qui est un pdf n'est pas entier et ne peut s'ouvrir car il est 'endommagé'.

Auriez-vous une idée pour contourner ce problème ?

Merci d'avance,

Petite précision, si j'essaye de décoder ce même fichier se trouvant en local sur mon poste, je n'ai pas de problème.

Le problème doit donc venir du fait que le fichier se trouve sur un serveur distant et la fonction decodefile ne doit pas avoir le temps de tout décoder.

Il faudrait donc que je trouve la solution pour lui laisser le temps de finir le decode, j'ai essayé d'ajouter Yield ( ) avant le decode, mais cela ne change rien.

Une petite idée serait la bienvenue

Merci d'avance,

Hors ligne

 

#3 23-05-2013 11:16:57

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Problème utilisation Base64.dll avec gros fichier

Salut, tu ne peux pas copier temporairement le fichier en local avant de le décoder ?


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#4 23-05-2013 12:50:11

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Problème utilisation Base64.dll avec gros fichier

erasorz a écrit:

Salut, tu ne peux pas copier temporairement le fichier en local avant de le décoder ?

Bonjour,

Je ne suis pas sur d'avoir l'information, je recherche, (le fichier est stocké sur un serveur de GED), et je ne suis pas sur que l'information soit disponible en clair pour faire un filecopy ou autre subtilité de ce genre.

Mais au cas cela ne serait pas possible, comment je pourrais faire pour que la fonction DecodetoFile prenne le temps de finir le decryptage avant de rendre la main ?

Code: pb

uo_64 = CREATE OLEObject
li_rc=uo_64.ConnectToNewObject("Base64Lib.Base64") 
IF li_rc<0 THEN
    RETURN -1
END IF

uo_64.DecodeToFile (fichier_a_decrypter, nom_fichier_final) 


Merci d'avance,

Hors ligne

 

#5 23-05-2013 13:49:08

Geo  
Membre completement Geek
Lieu: Binche
Date d'inscription: 15-12-2008
Messages: 119
Pépites: 378
Banque: 0

Re: [RESOLU] Problème utilisation Base64.dll avec gros fichier

Bonjour,

peut-être, dans une boucle, tenter d'ouvrir le fichier nom_fichier_final en écriture exclusive ?
Quand ça marche c'est que le decode a terminé non ?


Rien ne sert de courir, il faut partir à point .

Hors ligne

 

#6 23-05-2013 14:11:50

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Problème utilisation Base64.dll avec gros fichier

Geo a écrit:

Bonjour,

peut-être, dans une boucle, tenter d'ouvrir le fichier nom_fichier_final en écriture exclusive ?
Quand ça marche c'est que le decode a terminé non ?

Et bien, non justement, dans ce cas le fichier final est finalement sauvegardé, mais il n'est pas entier, et comme il s'agit d'un pdf, on ne peut plus l'ouvrir.

Et pour le rapatrier avant de le decrypter, cela n'est pas possible, puisque il n'existe pas physiquement dans un répertoire, mais il est stocké dans la base de données de la GED, et donc accessible uniquement via le webservice que nous utilisons.

Le support du webservice, me dit que je peux essayer de créer le fichier en binaire avant de le décrypter pour voir s'il est complet, mais je ne vois pas comment je peux faire cela en PB ?

Merci d'avance de vos nouvelles idées ?

Hors ligne

 

#7 23-05-2013 15:17:37

Geo  
Membre completement Geek
Lieu: Binche
Date d'inscription: 15-12-2008
Messages: 119
Pépites: 378
Banque: 0

Re: [RESOLU] Problème utilisation Base64.dll avec gros fichier

Que te renvoie l'instruction

Code:

uo_64.DecodeToFile (fichier_a_decrypter, nom_fichier_final)

si ça se passe bien, si ça se passe mal ?
Quels sont les différents returns codes possibles ?
De quel type est ta variable fichier_a_decrypter ?

Dernière modification par Geo (23-05-2013 15:25:51)


Rien ne sert de courir, il faut partir à point .

Hors ligne

 

#8 23-05-2013 15:42:54

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Problème utilisation Base64.dll avec gros fichier

Geo a écrit:

Que te renvoie l'instruction

Code:

uo_64.DecodeToFile (fichier_a_decrypter, nom_fichier_final)

si ça se passe bien, si ça se passe mal ?
Quels sont les différents returns codes possibles ?
De quel type est ta variable fichier_a_decrypter ?

Le problème est que je n'ai pas l'impression de decodetofile renvoie quelque chise  ici.

J'ai essayé avec un string ou un integer, mais pb tombe en erreur ? => Cannot convert oleobject in Any variable

Hors ligne

 

#9 23-05-2013 15:50:06

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Problème utilisation Base64.dll avec gros fichier

wazou1812 a écrit:

Geo a écrit:

Que te renvoie l'instruction

Code:

uo_64.DecodeToFile (fichier_a_decrypter, nom_fichier_final)

si ça se passe bien, si ça se passe mal ?
Quels sont les différents returns codes possibles ?
De quel type est ta variable fichier_a_decrypter ?

Le problème est que je n'ai pas l'impression de decodetofile renvoie quelque chise  ici.

J'ai essayé avec un string ou un integer, mais pb tombe en erreur ? => Cannot convert oleobject in Any variable

si je mets

Code: pb

any lb_test
lb_test = uo_64.DecodeToFile (as_value, is_chemin  + as_cdnumecc  + ".PDF") 


lb_test renvoie null que cela se passe bien ou pas

Hors ligne

 

#10 24-05-2013 11:09:54

Geo  
Membre completement Geek
Lieu: Binche
Date d'inscription: 15-12-2008
Messages: 119
Pépites: 378
Banque: 0

Re: [RESOLU] Problème utilisation Base64.dll avec gros fichier

As-tu regardé la taille de as_value ? Histoire de vérifier que ce que tu envoies au DecodeToFile(...) est complet.
C'est peut-être à la récupération de as_value qu'il y a déjà un problème.


Rien ne sert de courir, il faut partir à point .

Hors ligne

 

#11 24-05-2013 15:59:19

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Problème utilisation Base64.dll avec gros fichier

Geo a écrit:

As-tu regardé la taille de as_value ? Histoire de vérifier que ce que tu envoies au DecodeToFile(...) est complet.
C'est peut-être à la récupération de as_value qu'il y a déjà un problème.

Bonjour,

En fait, je viens de trouver la solution, avec la piste donnée par Geo.

Il y a un paramètre (un peu caché) au niveau du web service, qui détermine la taille maximum du fichier à récupérer.

Ce paramètre était positionné à 1000000 de bytes, il a suffit d'augmenter ce paramètre pour que cela fonctionne correctement.

Merci encore à vous pour vos idées,

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » [RESOLU] Problème utilisation Base64.dll avec gros fichier

Pied de page des forums

Propulsé par FluxBB 1.2.22