Télécharger un fichier depuis un serveur FTP

Fermé
jojorealisateur Messages postés 203 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 8 juillet 2020 - 6 févr. 2019 à 19:00
jojorealisateur Messages postés 203 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 8 juillet 2020 - 4 mars 2019 à 10:28
Bonsoir,

Je souhaite ajouter une fonction à mon logiciel qui lui permet de se mettre à jour en téléchargeant un zip de mon serveur FTP.
Pour se faire, j'utilise ce code :

Try
            My.Computer.Network.DownloadFile("ftp://serveurFTP", "C:\Windows\Temp\Fichier.zip", "NomUtilisateur", "MotDePasse")
            Me.Hide()
            Form3.Show()
        Catch ex As Exception
            Download()
        End Try


Le téléchargement se lance sans problèmes, mais se coupe au bout d'un certain temps et le logiciel plante...

Que puis-je faire ?

Merci !

Jojorealisateur
A voir également:

2 réponses

barnabe0057 Messages postés 14439 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 14 avril 2024 4 905
Modifié le 8 févr. 2019 à 22:53
Bonjour,

Je ne connais rien en VB, mais je peux te suggérer une solution en batch MS-DOS :

curl --output Fichier.zip -C - -# -u "user:password" "ftp://adresse:21/Fichier.zip"

Il suffit de télécharger cURL ici : https://curl.haxx.se/download.html


0
jojorealisateur Messages postés 203 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 8 juillet 2020 18
9 févr. 2019 à 20:05
Bonjour Barnabe0057,

Merci pour votre réponse. J'ai déjà cherché du côté du batch, mais je ne suis pas très chaud de télécharger une commande externe...

Le problème n'est pas le téléchargement en lui-même, le fichier se télécharge. Le problème est que le téléchargement se lance puis le logiciel passe directement en mode "dé-zippage" et le téléchargement s'interrompt puis le logiciel plante...

Enfin, merci beaucoup !

Jojorealisateur
0
barnabe0057 Messages postés 14439 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 14 avril 2024 4 905 > jojorealisateur Messages postés 203 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 8 juillet 2020
10 févr. 2019 à 00:01
Ce n'est pas n'importe quelle commande externe, c'est un véritable couteau suisse pour les protocoles HTTP et FTP. C'est une commande très réputée et c'est celle dont je me sers le plus.

Je ne comprend pas si ton 2ème paragraphe fait référence à cURL ou bien à ton problème initial.
0
yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471 > jojorealisateur Messages postés 203 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 8 juillet 2020
10 févr. 2019 à 11:17
tu écris:
le fichier se télécharge. Le problème est que le téléchargement se lance puis le logiciel passe directement en mode "dé-zippage" et le téléchargement s'interrompt puis le logiciel plante...
quel est le problème? le fichier est téléchargé. est-ce le dézippage que tu veux éviter? quel logiciel se plante avec quel code d'erreur ou quelle exception?
0
jojorealisateur Messages postés 203 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 8 juillet 2020 18
10 févr. 2019 à 14:29
Bonjour,

Désolé de ne pas avoir été clair dans mon message précédant... Il est vrai que j'étais un peu fatigué quand je l'ai écrit...

Donc, pour être sûr d'être clair cette fois, voici le principe de fonctionnement de mon logiciel. Je tiens à préciser que c'est un logiciel secondaire installé en même temps que mon logiciel principal et qui permet de mettre ce dernier à jour automatiquement.

1 - Téléchargement d'un fichier zip depuis mon serveur FTP.
2 - Dé-zippage de ce fichier
NB : Le zip contient les nouveaux fichiers qui vont remplacer ceux à mettre à jour (j'espère que c'est clair... Désolé si ça ne l'est pas...)
3 - Suppression des fichiers à mettre à jour situés dans le dossier du logiciel (situé dans les "Program Files")
4 - Copie par le logiciel de mise à jour des fichiers dé-zippés vers le dossier du logiciel
5 - Mise à jour des clés de registre
6 - création d'un nouveau raccourci vers le bureau
7 - Suppression des fichiers téléchargés

Le problème se situe entre l'étape 1 et la 2. Le téléchargement se lance, mais il s'arrête après quelques kilooctets téléchargés et passe à l'étape 2.

Pour "lui dire" de passer à l'étape 2, j'ai utilisé
if my.computer.filesystem.fileexists ("C:\Windows\Temp\Fichier.zip")
Then
Form3.show
Me.hide
End if


Ce n'est pas la bonne solution, mais c'est la seule que j'ai trouvé...

Voilà voilà...

Merci,

Jojorealisateur
0
yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
10 févr. 2019 à 17:21
pourquoi le téléchargement s’arrête-t'il? reçois-tu une exception?
comme tu montres des petits bouts de ton code, j'imagine que tu es certain que tout le reste est correct.
0
jojorealisateur Messages postés 203 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 8 juillet 2020 18
10 févr. 2019 à 17:52
Bonjour,

Je pense que le reste du code est correct, car tout fonctionne mis à part le téléchargement.

Je pense que c'est à cause du "If exist" mentionné plus haut : dès que le fichier existe (qu'il commence à être téléchargé), le logiciel passe à l'étape suivante (et le téléchargement s'arrête).

Le problème est donc que le logiciel ne sait pas "attendre" que le téléchargement soit fini pour passer à autre chose...
J'ai essayé avec un Timer, mais si la connexion est trop lente, le logiciel passe quand même à autre chose, téléchargement fini ou non.

Si vous avez donc un truc à proposer pour "mettre en attente" le logiciel, je suis preneur à 100% !

Merci !

Jojorealisateur
0
yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
10 févr. 2019 à 17:56
je suis surpris que My.Computer.Network.DownloadFile se termine avant que le téléchargement soit fini.
0
jojorealisateur Messages postés 203 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 8 juillet 2020 18
10 févr. 2019 à 18:11
Nous sommes donc bien d'accord que le téléchargement est censé continuer en arrière-plan ?

Si cela n'est pas possible, comment faire pour que le logiciel "attende" que le téléchargement soit fini ?
0
yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471 > jojorealisateur Messages postés 203 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 8 juillet 2020
10 févr. 2019 à 18:27
je pense plutôt que le programme va rester dans l'instruction My.Computer.Network.DownloadFile jusqu'à ce que le téléchargement soit fini.
0