Télécharger un fichier depuis un serveur FTP

jojorealisateur Messages postés 203 Date d'inscription   Statut Membre Dernière intervention   -  
jojorealisateur Messages postés 203 Date d'inscription   Statut Membre Dernière intervention   -
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 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925
 
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   Statut Membre Dernière intervention   18
 
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 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925 > jojorealisateur Messages postés 203 Date d'inscription   Statut Membre Dernière intervention  
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > jojorealisateur Messages postés 203 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   18
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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   Statut Membre Dernière intervention   18
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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   Statut Membre Dernière intervention   18
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > jojorealisateur Messages postés 203 Date d'inscription   Statut Membre Dernière intervention  
 
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