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
M_L_
25. Dezember 2010 um 16:26
2
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
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