Si c'est pour du transfert de fichiers entre utilisateur, regarde du côté des sockets. Il suffit de transmettre le fichier transformé en buffer auquel on aura accolé un CRC.
Le serveur sera chargé du routage
Si c'est pour du transfert de fichiers entre utilisateur, regarde du côté des sockets. Il suffit de transmettre le fichier transformé en buffer auquel on aura accolé un CRC.
Le serveur sera chargé du routage
Il y a peut-être plus simple, mais ça tourne.
Quand tout a échoué utilisez l'option RTFM
Bonjour frenchsting,
Alors pour te répondre;
-transfert unilatéral : uniquement déposer des fichiers (PDF) dans certains répertoires sur lesquels des traitements sont paramétrés et gérés par le serveur distants.
-En terme de fréquence cela va dépendre des échéances du boulot et de la période. Parfois, je vais devoir déposer plus dizaines de fichiers dans la journée et parfois rien de va se passer durant plusieurs jours : enfin rien de journalier avec un volume important si c'est le fond de la question.
-Il faut aussi prévoir l'envoi de fichiers (toujours PDF) assez lourds, plusieurs dizaines ou centaines de Mo.
Je pense qu'il va "simplement" falloir faire un envoi avec les fonctions FTPxxx de Windev...
Pour vérifier que la sécurité de ton serveur est compatible avec les fonctions de Windev, je te conseille de faire un petit dév hyper-basique (un bouton sur une fenêtre existante) qui va envoyer un fichier. En codant toutes les infos en dur dans ton code (serveur + port, user, mdp, chemin+nomfichier).
Ensuite, tu feras ton "vrai" dév avec ta sélection de fichiers et la possibilité de lire les paramètres dans un fichier ini (par exemple).
Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.
Sur internet, tout est vrai ! Honoré de Balzac
Make it real not fantasy... Herman Rarebell
Bonjour,
Comme proposé par frenchsting, j'ai codé un petit soft qui se connecte à mon serveur (pour vérifier qu'il n'y a pas de soucis de sécurité ...) et rentrant toutes les informations en dur.
Voici le code utilisé :
Pas de soucis rencontré. Le fichier "1.pdf" est bien envoyé sur le serveur !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 nConnexion est un entier nConnexion = FTPConnecte("sftp://url_serveur_distant", "utilisateur", "mot_de_passe",port) SI FTPEnvoie(nConnexion, fRepExe() + "\1.PDF", "/C:/dossier") = Faux ALORS Info("Echec du transfert",ErreurInfo) FIN
Du coup, j'ai tenté d'utiliser le même code pour un montage de lecteur réseau ... en rajoutant la lettre avant l'url du serveur mais en vain, cela ne fonctionne pas : message d'erreur.
Maintenant, faut que j'essaye de poursuivre :
- quel champ dois-je utiliser pour faire apparaître le contenu de mon dossier distant?
- mettre en place le drag and drop dessus ce champ pour glisser mes fichiers à transférer
- code pour lancer le transfert auto
- faire en sorte que l'application se lance au démarrage de Windows
Merci d'avance pour vos réponses.
Bonjour,
Pour lister les fichiers distants, tu as FTPListeFichier.
- Tu sais récupérer une liste de fichiers (cf listes des fichiers pdf à funsionner) : ex : fic1, fic2,...ficn
- Tu envoyer un fichier (vu dans cette discussion)
- tu peux donc envoyer tes fichiers récupéré : n'oublie pas que tu ne transfères qu'un fichier à la fois (d'abord fic1, puis fic2, ..., puis ficn)
Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.
Sur internet, tout est vrai ! Honoré de Balzac
Make it real not fantasy... Herman Rarebell
Bonjour frenchsting,
Merci pour le retour.
Ce que j'aimerai faire (et surtout pour mes utilisateurs finaux) c'est afficher l'arborescence complète du dossier du serveur distant (un peu à la façon de FileZilla) :
Car concrètement je n'ai pas d'intérêt de "lister" le contenu des dossiers distants car ceux-ci ne sont présents que pour faire du traitement de fichiers (=classement auto dans une GED) du coup en principe ils doivent être vides ^^
Je cherche plus à reproduire une arborescence dans laquelle l'utilisateur n'aurait qu'à glisser/déposer son (ou ses) fichiers pour qu'il(s) soi(en)t traité(s).
D'ailleurs est-il possible de transférer plusieurs fichiers à la fois et pas 1 après l'autre ?
Quelque part, c'est mieux que tu ne puisses pas créer de lecteur réseau. Cela évite les âneries, du genre j'uploade un exe, une dll, ...des photos de vacances dans un répertoire géré par un automate qui va planter car il ne sais pas gérer ces fichiers.
ftplistefichier() te liste les fichiers et les répertoires distants : A toi de gérer l'arborescence reçue pour l'afficher dans un arbre...
Non, on ne peut pas faire d'envois simultanés genre ftpenvoie(idcnx, fic1, fic2, ..., ficn). Je n'en vois pas l'intérêt...
Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.
Sur internet, tout est vrai ! Honoré de Balzac
Make it real not fantasy... Herman Rarebell
J'ai fais pas mal de recherches dans l'après-midi et je dois avouer que j'ai rien trouvé de bien concluant.
L'aide de la fonction "ftplistefichier()" permet juste de renvoyer un nombre de fichiers présent sur le serveur distant ... pas vraiment d'intérêt pour moi ^^ lol
Du coup, j'ai cru comprendre qu'il faudrait peut être que j'alimente une table ou fichier de données en listant le contenu du serveur distant et qu'ensuite j'alimente mon champ arbre par exemple depuis cette table ou fichier de données? Suis-je sur la bonne voie?
Cela me semble bien compliqué ...
Il doit y avoir plus simple non ?
Merci d'avance pour les retours.
https://doc.pcsoft.fr/fr-FR/?1000003...chier_fonction
Permet d'avoir la liste des fichiers (pas seulement le nombre).
Une variable tableau suffit. Cette variable sera alimentée via la fonction appelée.
Ou alors t'inspirer de l'exemple unitaire
C'est toi qui te complique la vie là. Depuis le départ d'ailleurs. A moins que ce ne soit dans le cahier des charges imposé ...Cela me semble bien compliqué
Il y a peut-être plus simple, mais ça tourne.
Quand tout a échoué utilisez l'option RTFM
Je suis preneur si il y a plus simple.🤔
Mais vu que le montage via lecteur réseau n a pas l air de fonctionner .... j essaye de trouver une alternative au problème.
Je cherche juste un moyen simple de televerser des PDF sur le serveur sftp!!
Un peu à la façon de mountain duck ( ou autre du même genre) via un simple glisser/déposer
Bonsoir
Vous avez essayé l'exemple WD Transfert de fichiers par FTP ?
Bonsoir,
Oui oui j ai essayé de regarder et adapter l exemple pour mon cas.... mais un peu trop complexe pour moi 🙁
Bonjour,
Après plusieurs essais sans résultat, j'ai décidé de chercher une alternative pour résoudre mon besoin de mettre en place un genre de lecteur réseau connecté en sFTP.
Je suis tombé sur la fonction "fSurveilleRépertoire()" qui m'a donné un nouvel angle d'attaque à ma problématique.
Il fallait aussi que je trouve comment envoyer plusieurs fichiers en même temps et suite à des recherches je suis tombé sur le code suivant (qui appartient à frenchsting, que je remercie dans la foulée, trouvé dans le fil de discussion suivant : https://www.developpez.net/forums/d1...u-dossier-ftp/) :
Après adaptation pour mes besoins, je suis arrivé au code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 UnFichier, ResListeFichier sont des chaînes ResListeFichier = fListeFichier("S:\Tranfert\Dossier_A\*.*", frNonRécursif) // Pour chaque fichier trouvé POUR TOUTE CHAÎNE UnFichier DE ResListeFichier SEPAREE PAR RC FTPEnvoie(PGlobales.gnIDConnexionFTP, UnFichier, "/Contenu/Dossier_B") FIN
J'ai mis celui ci dans une procédure globale que j'appelle via le code suivant (placé dans le code de fin initialisation de ma fenêtre) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 nConnexion est un entier UnFichier, ResListeFichier sont des chaînes nConnexion = FTPConnecte("url_serveur", "utilisateur", "mot_de_passe",N°port) ResListeFichier = fListeFichier("C:\Transfert\*.pdf*", frNonRécursif) POUR TOUTE CHAÎNE UnFichier DE ResListeFichier SÉPARÉE PAR RC FTPEnvoie(nConnexion, UnFichier, "chemin_sur_serveur_distant") fSupprime(UnFichier,frVersCorbeille) FIN FTPDéconnecte(nConnexion)
J'ai ensuite généré mon .exe que je lance au démarrage de ma session Windows via une tâche planifiée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 // Nom du répertoire à surveiller sNomRepertoire est une chaîne = "C:\Transfert" // La procédure TraiteModificationRep sera appelée // lorsqu'un fichier ou un répertoire contenu dans le répertoire "C:\Transfert" sera modifié. fSurveilleRépertoire(sNomRepertoire,envoi_fichier_SFTP, fsCréationFichier + fsModificationFichier + fsSuppressionFichier + fsRenommage)
Tout fonctionne,cependant, j'ai quelques interrogations ? :
- mon code est-il "clean" ? et placé au bon endroit?
- je vais devoir faire la même procédure avec 2 dossiers en plus; comment faire en sorte que le code soit optimale? Me suffit-il de copier/coller cette procédure ou il est possible de mettre l'ensemble de manière plus performante?
- appelé le .exe avec une tache planifiée est une bonne idée?
Je vous remercie pour les différents retours et je suis preneur de toute amélioration ^^
Hello SamSam,
J'avais un peu décroché de ton histoire, mais me je passe te faire un coucou.
Pour ton deuxième répertoire, si ton traitement est identique, tu peux faire :Mais je pense que tu dois mettre tes fichiers du répertoire 2 dans un autre répertoire sur ton serveur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 // Nom du répertoire à surveiller sNomRepertoire est une chaîne = "C:\Transfert" sNomRepertoire2 est une chaîne = "C:\Transfert2" // La procédure TraiteModificationRep sera appelée // lorsqu'un fichier ou un répertoire contenu dans le répertoire "C:\Transfert" sera modifié. fSurveilleRépertoire(sNomRepertoire,envoi_fichier_SFTP, fsCréationFichier + fsModificationFichier + fsSuppressionFichier + fsRenommage) fSurveilleRépertoire(sNomRepertoire2,envoi_fichier_SFTP, fsCréationFichier + fsModificationFichier + fsSuppressionFichier + fsRenommage)
Une idée : Tu testes le nom du répertoire dans ta procédure (si c'est égal à snomrepertoire ou à snomrepertoire2)
Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.
Sur internet, tout est vrai ! Honoré de Balzac
Make it real not fantasy... Herman Rarebell
Hello frenchsting,
Merci pour le retour. Oui en effet, mon projet était un peu tombé aux oubliettes ^^
Puis au vu des derniers évènements, je me suis dis que chacun devait avoir d'autres choses sur le feu !!
D'ailleurs, j'espère que tout va bien? Que la situation est gérable ?
En effet, les fichiers du répertoire2 doivent être envoyés dans un autre répertoire du serveur.
Du coup, je dois passer par un "selon - cas1 - cas 2" dans ma procédure si j'ai bien compris?
Hello Samsam,
Ca va. Je bosse en télétravail. Et Toi ?
Oui, il faudra que tu passes par une variable globale pour savoir sur quel répertoire tu dois travailler.
Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.
Sur internet, tout est vrai ! Honoré de Balzac
Make it real not fantasy... Herman Rarebell
Hello frenchsting,
Ça va également pour moi ^^ Tant mieux si de ton côté aussi tout va bien
Télétravail pour moi également et je m'occupe de le mettre en place pour l'ensemble des autres personnes ... c'est pas toujours gagné ^^ lol
Je te remercie pour le retour.
Je clôture la discussion.
Encore merci à tous pour votre aide et vos réponses.
A bientôt pour d'autres problématiques !!
Bonne soirée à tous et prenez soin de vous et de vos proches.
Super si ça va.
Prends soin de toi et de tes proches également.
Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.
Sur internet, tout est vrai ! Honoré de Balzac
Make it real not fantasy... Herman Rarebell
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager