Le moyen le plus facile
La façon la plus triviale de télécharger un fichier vers un serveur FTP à l'aide du cadre .NET est d'utiliser la méthode suivante WebClient.UploadFile
méthode :
WebClient client = new WebClient();
client.Credentials = new NetworkCredential("username", "password");
client.UploadFile(
"ftp://ftp.example.com/remote/path/file.zip", @"C:\local\path\file.zip");
Options avancées
Si vous avez besoin d'un plus grand contrôle, cela WebClient
n'offre pas (comme Cryptage TLS/SSL (mode de transfert ascii/texte, mode actif, reprise du transfert, suivi de la progression, etc. FtpWebRequest
. Le moyen le plus simple est de copier un FileStream
vers un flux FTP en utilisant Stream.CopyTo
:
FtpWebRequest request =
(FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/remote/path/file.zip");
request.Credentials = new NetworkCredential("username", "password");
request.Method = WebRequestMethods.Ftp.UploadFile;
using (Stream fileStream = File.OpenRead(@"C:\local\path\file.zip"))
using (Stream ftpStream = request.GetRequestStream())
{
fileStream.CopyTo(ftpStream);
}
Suivi des progrès
Si vous devez surveiller la progression d'un téléchargement, vous devez copier vous-même le contenu par morceaux :
FtpWebRequest request =
(FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/remote/path/file.zip");
request.Credentials = new NetworkCredential("username", "password");
request.Method = WebRequestMethods.Ftp.UploadFile;
using (Stream fileStream = File.OpenRead(@"C:\local\path\file.zip"))
using (Stream ftpStream = request.GetRequestStream())
{
byte[] buffer = new byte[10240];
int read;
while ((read = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
ftpStream.Write(buffer, 0, read);
Console.WriteLine("Uploaded {0} bytes", fileStream.Position);
}
}
Pour les progrès de l'interface graphique (WinForms ProgressBar
), voir l'exemple en C# à l'adresse
Comment afficher une barre de progression pour le téléchargement avec FtpWebRequest ?
Chargement du dossier
Si vous voulez télécharger tous les fichiers d'un dossier, voir
Télécharger un répertoire de fichiers vers un serveur FTP à l'aide de WebClient .
Pour un téléchargement récursif, voir
Téléchargement récursif vers un serveur FTP en C#