Einfachster Weg
Die einfachste Möglichkeit, eine Datei mit .NET Framework auf einen FTP-Server hochzuladen, ist die folgende WebClient.UploadFile
Methode :
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");
Erweiterte Optionen
Wenn Sie eine bessere Kontrolle benötigen, die WebClient
diese nicht bietet (wie TLS / SSL-Verschlüsselung , ASCII-Modus, aktiver Modus usw.), verwenden Sie FtpWebRequest
. Ein einfacher Weg ist, einen FileStream
in einen FTP-Stream zu kopieren , indem Sie 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);
}
Fortschrittsüberwachung
Wenn Sie den Upload-Fortschritt überwachen müssen, müssen Sie den Inhalt selbst in Blöcke kopieren:
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);
}
}
Informationen zum GUI-Fortschritt (WinForms ProgressBar
) finden Sie im C # -Beispiel unter :
Wie können wir den Fortschrittsbalken für das Hochladen mit FtpWebRequest anzeigen?
Ordner hochladen
Wenn Sie alle Dateien aus einem Ordner hochladen möchten,
lesen Sie Upload des Dateiverzeichnisses mit WebClient auf den FTP-Server .
Informationen zum rekursiven Hochladen finden Sie unter
Rekursives Hochladen auf den FTP-Server in C #