PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → hashFichier() et Ftp
hashFichier() et Ftp
Iniciado por cf2icourrier, 09,nov. 2018 16:09 - 2 respuestas
Publicado el 09,noviembre 2018 - 16:09
Bonjour tout le monde

Je suis confronté au problème suivant :
J'envoie par FTPEnvoie des fichiers sur un serveur distant. L'envoi est ok. Par mesure de précaution, je désire faire un HashFichier() pour vérifier si la copie est correcte ; et apparemment, HashFichier() ne permet pas de traiter un fichier distant. C'est normal ou je m'y prends mal ?

Voici mon test :
Dans l'exemple, il y a 4 tests; les 2 premiers renvoient ""empreintes différentes" et les 2 suivants test renvoient vrai : en fait, le troisième et quatrième récupèrent le fichier copié (sous un autre nom, FichierComparaison), et calcule son empreinte ;et ces 3ème et 4ème test sont ok.

Mais cela me chagrine de devoir downloader le fichier que je viens de uploader juste pour vérification...
Alors, une idée ? Merci !
MethodeHash est entier=HA_SHA_256
hFichierDestination est un Buffer
hFichierSource est un Buffer=HashFichier(MethodeHash,fichierSource)

nIDConnexion = FTPConnecte(RépertoireDistant,login, mdp)
SI nIDConnexion <> -1 ALORS
FTPEnvoie(nIDConnexion,fichierSource,fichierDestination)

//premier test*******************************************************
SI HashVérifieFichier(MethodeHash,fichierDestination,hFichierSource) ALORS
Info("1-Empreintes Ok")
SINON
Info("2-Empreintes différentes")
FIN

//second test*******************************************************
hFichierDestination =HashFichier(MethodeHash,fichierDestination)
SI hFichierSource=hFichierDestination ALORS
Info("3-Empreintes Ok")
SINON
Info("4-Empreintes différentes")
FIN

//troisième test *******************************************************
SI FTPRécupère(nIDConnexion,fichierDestination,FichierComparaison,proc,ftpModeBinaire) ALORS
hFichierDestination =HashFichier(MethodeHash,FichierComparaison)
SI hFichierSource<>"" ET hFichierSource=hFichierDestination ALORS
Info("5-Empreintes Ok")
SINON
Info("6-Empreintes différentes")
FIN
FIN
//quatrième test *******************************************************
SI HashVérifieFichier(MethodeHash,FichierComparaison,hFichierSource) ALORS
Info("7-Empreintes Ok")
SINON
Info("8-Empreintes différentes")
FIN
FIN
FTPDéconnecte(nIDConnexion)
Miembro registrado
953 mensajes
Publicado el 12,noviembre 2018 - 17:00
bonjour,

Pour vos transferts FTP ,vous pouvez aussi ajouter des extensions à vos fichier à transférer, puis si la commande FTPEnvoie ne vous retourne pas d'erreur, renommer votre fichier avec son nom final.

Exemple, si vous voulez transférer le fichier MONFIC.DAT ,
faite un FTPEnvoie avec comme destination MONFIC.DAT.uploading
Une fois le FTPEnvoie terminé, fait un FTPRenommeFichier()

Pour votre code :
1 er test : Normal qu'il échoue car fichierDestination n'existe pas sur votre poste, il ne pourra pas accéder à distance au serveur FTP
2 eme test : Idem

Pour finir, certain serveur FTP intègre des fonctions de CRC ou de MD5 , mais çà va rester très propriétaire au logiciel serveur FTP ....

Bon dèv
Publicado el 13,noviembre 2018 - 11:31
Bonjour
Oui merci de la réponse.
Je peux tester avec la valeur de retour de FtpEnvoie si le transfert s'est bien passé.
Mais j'aurais préféré avoir une confirmation supplémentaire en comparant les deux empreintes.
Je vais me tourner vers les API de mon hébergeur...
ElPato