C#: Datei via FTP hochladen

Da ich gerade dabei bin, hier direkt das nächste kleine Tutorial: Ihr möchtet eine Datei über einen Euch bekannten FTP hochladen. Dazu benutzen wir hier den FtpWebRequest, der es uns ermöglicht einen Stream zum FTP aufzubauen und über diesen jede beliebige Datei hochzuladen.

Dieser Prozess ist allerdings kein asynchroner Prozess, daher werdet Ihr keinen wirklichen Fortschritt sehen, wenn Ihr die folgenden Codezeilen ausführt. Das heißt, er lädt die Datei ersteinmal komplett hoch, bevor er mit dem weiteren Code fortfährt.

Um diese Problematik zu umgehen, solltet Ihr einen eigenen Thread oder den BackgroundWorker bemühen und diesen dann async (also asynchron) aufrufen. Dann wird dieser Prozess im Hintergrund ausgeführt, während Eure Applikation die weiteren Schritte durchläuft. Aber auch hierzu wird es in Kürze ein Tutorial geben.

using System.Net;

try
{
  // Pfad zur neuen Datei
  string ftp = @"ftp://meinserver.de/pfad/libsmods.zip";

  // FtpWebRequest initialisieren
  FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri(ftp));

  // Methode auswählen (hier UploadFile)
  request.Method = WebRequestMethods.Ftp.UploadFile;
  // Benutzername und Passwort übergeben
  request.Credentials = new NetworkCredential("Username", "Password");

  // Verbindung überprüfen
  WebResponse response = request.GetResponse();

  // Datei zum Upload auswählen und in FileStream schreiben
  FileStream fs = new FileStream(@"C:\test.zip", FileMode.Open);
  byte[] fileContents = new byte[fs.Length];
  fs.Read(fileContents, 0, Convert.ToInt32(fs.Length));
  fs.Flush();
  fs.Close();

  // Stream zum FTP aufbauen
  Stream requestStream = request.GetRequestStream();
  // Datei via Stream schreiben
  requestStream.Write(fileContents, 0, fileContents.Length);
  // Stream beenden
  requestStream.Close();

  // Verbindung beenden
  request.Abort();
}

catch (Exception ex)
{
  MessageBox.Show(ex.message, "Error");
}

Add your comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code lang=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" extra="">

THE SOURCE OF CODE DOMINATION