FTP Server in C# programmieren

Hallo

Ich schreibe bald eine Klassenarbeit über das Thema

„FTP Download & Upload und UML“

Ich check beides einfach nicht.

Ich soll eine Datei uploaden und downoaden können
für den Upload habe ich folgende Anleitung für den Download leider keine

UPLOAD

1: verbindung aufbauen 2.Übertragungsparameter setzen
3. Für die zu übertragende Datei einen Filestream öffnen
4. Die datei in vernüftigen großen Paketen übertragen
5.Alle Streams schließen
6. FTP Verbindung schließen

kann mir einer von euch bitte den Code erstellen und mir wirklich idiotengerecht erklären was er warum gemacht hat ?

Vielen Dank

Auch hallo

kann mir einer von euch bitte den Code erstellen

Ein Blick unter Codeproject.com könnte vielleicht eher weiterhelfen: http://www.codeproject.com/KB/IP/SimpleFTPDemo.aspx

mfg M.L.

Hoi test22,

grundsätzlich benötigst du immer 2 Objekte des Namespaces

System.Net
  • Die „Frage“-Möglichkeit

    FtpWebRequest

  • Die „Antwort“-Möglichkeit

    FtpWebResponse

und 2 bzw. 3 Objekte aus dem Namespace

System.IO
//die Obj.:
FileStream, Stream bzw. StreamReader

Damit hast du alle „Werkzeuge“ die man für solche Aufgaben braucht. Eine mögliche Download-Funktion zb. könnte so aussehen:

private void MhbsFtpDownload(string URL, string user, string pass)
{
 FtpWebRequest request = null;
 FtpWebResponse response = null;
 Stream respStrm = null;
 FileStream fStrm = null;
 try
 {
 request = (FtpWebRequest)WebRequest.Create(URL);
 request.Credentials = new NetworkCredential(user, pass);
 request.Method = WebRequestMethods.Ftp.DownloadFile;

//auszuführende Aktion:
 response = (FtpWebResponse)request.GetResponse();
 respStrm = response.GetResponseStream();

//Dateiname(n) holen:
 saveFileDialog1.FileName = Path.GetFileName(request.RequestUri.LocalPath); 
 if (saveFileDialog1.ShowDialog() == DialogResult.OK)
 {

//Zieldatei öffnen:
 fStrm = File.Create(saveFileDialog1.FileName);

//puffergröße bzw.puffer-lehren kannst du auch über eine while-schleife anpassen
//(zb.alle 256 bytes einen schreibvorgang realisieren)...

 byte[] DatenPuffer = new byte[1024];
 int bytesNochZuLesen = 0;

//Einlesen / in Datei kopieren:
 while (true)
 {
 bytesNochZuLesen = respStrm.Read(DatenPuffer, 0, DatenPuffer.Length);
 if (bytesNochZuLesen == 0) break;
 fStrm.Write(DatenPuffer, 0, bytesNochZuLesen);
 }
 MessageBox.Show("Download komplett!");
 }
 }
 catch (UriFormatException ex)
 {
 MessageBox.Show("ex.Message);
 }
 catch (WebException ex)
 {
 MessageBox.Show("ex.Message);
 }
 catch (IOException ex)
 {
 MessageBox.Show("ex.Message);
 }
 finally
 {
 if (respStrm != null)
 respStrm.Close();
 if (fStrm != null)
 fStrm.Close();
 }
}

ähnlich sieht die Sache auch bei einem Upload aus, nur das die Speicherung ein wenig anders aufgebaut ist (da du ja auf dem Server speicherst).

Ich hoffe das hilft dir weiter…

Greetz, me