Bonjour,
J'aimerais savoir comment télécharger un fichier en FTP. Actuellement, j'utilise ce code, mais il me télécharge un fichier vide (pour l'instant que des .txt)
La fonction "FtpDownload"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 FtpDownload(New Uri(Directory & UFI.Text & "." & Extension.Text), _ New NetworkCredential(UserName, "motdepasse"), _ New DirectoryInfo(DossierOuMettreLeFichier)) 'Ce code est en lien avec la fonction ci dessous
Voilà voilà, alors je sais pas trop où est l'erreur vu que c'est pas moi qui ai écrit le texte, mais ce serait sympa si vous pouviez m'aider !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 Public Shared Function FtpDownload(ByVal uri As Uri, ByVal credentials As NetworkCredential, ByVal dirInfo As DirectoryInfo) As FileInfo Dim fi As FileInfo Dim request As FtpWebRequest = DirectCast(WebRequest.Create(uri), FtpWebRequest) request.Credentials = credentials request.UseBinary = True request.Method = WebRequestMethods.Ftp.DownloadFile 'Utilisé pour envoyer la commande "QUIT" au serveur afin de fermer correctement la connexion request.KeepAlive = False ' Taille du tableau servant à stocker les morceaux du fichier. ' On épargne ainsi les ressources du serveur en ne chargeant pas la totalité du fichier. ' Cela permet de transférer rapidement des fichiers volumineux. Dim buffer As Byte() = New Byte(2047) {} ' Variable de mesure de la taille du morceau de fichier lu. Permet d'indiquer que le fichier a été lu et écrit en totalité. ' Recupération de la réponse Using res As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse) fi = New FileInfo(String.Concat(dirInfo.FullName, uri.Segments(uri.Segments.Length - 1))) Using stream As New BinaryReader(res.GetResponseStream()) Using fs As FileStream = File.Create(fi.FullName, buffer.Length, FileOptions.WriteThrough) ' Ecriture du flux dans le fichier block par block Dim block As Integer While ((block = stream.Read(buffer, 0, buffer.Length)) > 0) fs.Write(buffer, 0, block) End While fs.Close() End Using End Using End Using Return fi End Function
Merci !
Partager