PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Copier un fichier d'un site vers l'application en cours
Copier un fichier d'un site vers l'application en cours
Iniciado por Daniel19, 27,sep. 2019 10:43 - 6 respuestas
Miembro registrado
74 mensajes
Publicado el 27,septiembre 2019 - 10:43
Bonjour,
Voilà mon petit problème :
J'ai une appli qui doit aller chercher dans un répertoire précis d'un site web, un fichier et le recharger dans le répertoire de l'appli. Après mise à jour, le fichier doit être renvoyé dans le répertoire du site web.

J'ai essayé mais sans succès.

Pouvez-vous m'aider, voici le code que j'utilise pour récupérer le fichier ::
SI HTTPRequête(gsUrlFic) ALORS
gsTxtReq = HTTPDonneRésultat(httpRésultat)
gnIdFic = fOuvre(gsnomfic,foCréation+foEcriture)
SI gnIdFic <> -1 ALORS
fEcritLigne(gnIdFic,gsTxtReq)
fFerme(gnIdFic)
FIN
HRéindexe(FMembres)
sinon
Erreur("etc")
fin

Merci !
Publicado el 27,septiembre 2019 - 11:12
Bonjour,

Pour ma part, je serais passé par un FTPRécupère pour reprendre le fichier depuis le web.
Et pour le renvoyer une fois modifié avec l'instruction FTPEnvoi...
Miembro registrado
953 mensajes
Publicado el 27,septiembre 2019 - 11:50
bonjour ,

votre code me laisse à penser que tentez de récupérer un fichier HyperFile ( un fichier .FIC ) et d'écrire à l'intérieur avec un fEcritLigne() ??

( c'est lorsque j'ai vu votre HReindexe() )

si c'est bien le cas, çà ne fonctionnera jamais....
on ne peu pas écrire dans un fichier .FIC avec des fecritligne() , le fichier possède une structure bien précise, il faut passer par des HAjoute() / HModifie() , HRAZ() etc...

Est-ce que vous êtes en HFSQL C/S ? ( j'ai l'impression que non )

En HFSQL Classic :

Soit vous supprimez votre fichier FIC et NDX avant, avec un fsupprime() pour le fic et NDX ( quid du MMO ? )

En HFSQL C/S :

Vous pouvez utiliser la fonction HSupprimeFichier()



Pour le résultat de votre HTTPDonneResultat() utilisez un buffer

_mon_buffer_HFSQL est un buffer= HTTPDonneRésultat(httpRésultat)


puis utilisez fSauveBuffer() pour sauvegarder tout cela vers le nom de votre fichier .FIC
et ensuite, utilisez HReindexe()

bon dèv
Miembro registrado
74 mensajes
Publicado el 27,septiembre 2019 - 13:36
Bonjour et merci de vos réponses.

Gael je ne connais pas du tout ces fonctions ; je vais regarder...

Oui Christophe votre analyse est la bonne, bien vu !
Je suis en HFSQL Classic et je n'utilise pas de MMO.
Malheureusement cela ne fonction pas : lors du HReindexe j'ai un message me précisant que le fichier n'est pas au format .FIC

Merci
Miembro registrado
74 mensajes
Publicado el 30,septiembre 2019 - 09:35
Bonjour !

Un petit up...

Merci et bonne journée.
Miembro registrado
324 mensajes
Publicado el 30,septiembre 2019 - 12:53
HFerme(MonFichier.Fic)

SI httpRequête(gsUrlFic) ALORS
sNomFic = c:\Monfichier.Fic
fSauveTexte(sNomFic,HTTPDonneRésultat(httpRésultat))
//On le sauve forcément en écrasant le précédent par exemple
FIN

HOuvre(MonFichier.Fic)


PS : Je vois que la réponse était donné au dessus. C'est vachement violent comme façon de faire, pourquoi ne pas utiliser un WebService REST pour mettre à jour la base !

Maintenant le seul moyen de garantir un bon dl du fichier, perso je partirais sur un wevservice rest qui envoie en binaire au client le fichier, mais si service rest il y a, alors autant lui demander d'écrire direct dans le fic, pas besoin de dl, je n'imagine pas le bordel pour dl le fic, le mmo et le ndx quand ca atteindre de forte taille :\.
Mensaje modificado, 30,septiembre 2019 - 12:55
Miembro registrado
74 mensajes
Publicado el 01,octubre 2019 - 08:48
Bonjour et merci !
Oui la réponse était au-dessus mais cela ne fonctionne pas.
J'ai modifié ma façon de faire et j'utilise un fichier texte que j'importe dans mon .FIC et inversement ; là c'est ok. (la taille du fichier est extrêmement réduite)
.
Bonne journée.