FAQ ASP.NET/VB.NETConsultez toutes les FAQ

Nombre d'auteurs : 38, nombre de questions : 369, dernière mise à jour : 28 juin 2013 

 
OuvrirSommaireCoté serveur et C#Transferts FTP

On pourra utiliser la méthode suivante :

 
Sélectionnez

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
			End Using
		End Using
	End Using
	Return fi
End Function

Public Shared Sub TestFtpDownload()
	' exemple d'utilisation
	FtpDownload(New Uri("ftp://hd1.freebox.fr/Disque dur/Enregistrements/test.txt"), _
				New NetworkCredential("freebox", "000000"), _
				   New DirectoryInfo("C:\temp\"))
End Sub
Créé le 15 décembre 2009  par Immobilis, nico-pyright(c)

On pourra utiliser la méthode suivante :

 
Sélectionnez

Public Shared Function FtpUpload(ByVal uri As Uri, ByVal credentials As NetworkCredential, ByVal fileInfo As FileInfo) As Boolean
	Dim request As FtpWebRequest = DirectCast(FtpWebRequest.Create(Path.Combine(uri.AbsoluteUri, fileInfo.Name)), FtpWebRequest)
	request.Method = WebRequestMethods.Ftp.UploadFile
	request.Credentials = credentials
	request.UseBinary = True
	request.KeepAlive = False
	request.UsePassive = True
	Dim buffer As Byte() = New Byte(2047) {}
	Using stream As Stream = request.GetRequestStream()
		Using fs As FileStream = File.OpenRead(fileInfo.FullName)
			Dim block As Integer
			While ((block = fs.Read(buffer, 0, buffer.Length)) > 0)
				stream.Write(buffer, 0, block)
			End While
		End Using
	End Using
	Return (True)
End Function

Public Shared Sub TestFtpUpload()
	' exemple d'utilisation
	FtpUpload(New Uri("ftp://hd1.freebox.fr/Disque dur/Enregistrements/"), _
				 New NetworkCredential("freebox", "000000"), _
				 New FileInfo("C:\temp\test.txt"))
End Sub
Créé le 15 décembre 2009  par Immobilis, nico-pyright(c)
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Dotnet Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.