Hoi test22,
grundsätzlich benötigst du immer 2 Objekte des Namespaces
System.Net
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