Feedback

C# - Datei auf einen Ftp uploaden

Veröffentlicht von am 20.03.2007
(3 Bewertungen)
Mithilfe der Klasse FtpWebRequest eine lokale Datei auf einen Ftp Server abspeichern.
GFU-Schulungen  [Anzeige]

C# Grundlagen

Die Schulung vermittelt Ihnen die Grundlagen von C# in der Arbeit mit Datentypen sowie bei Klassenbibliotheken. Sie lernen, mit Variablen umzugehen und deren verschiedene Formen zu konvertieren. 

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

        private void SaveOnFtP()
        {
            //Eine neue Datei erstellen und lokal speichern (Beispiel hier: Textfile)
            StreamWriter w = new StreamWriter("C://Beispiele/MyFile.txt", true);
            w.WriteLine("BlaBlaBla");
            w.Close();

            //Ein Request erstellen an den ftp Server
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.meinftp.ch/");

            //Die Methode angeben um eine Datei hochzuladen
            request.Method = WebRequestMethods.Ftp.UploadFile;

            //Berechtigungsdetails setzen vom ftp Server durch Username und Passwort
            request.Credentials = new NetworkCredential("Username", "Passwort");

            try
            {
                //Versuch eine Verbindung zu erstellen und eine Antwort zu erhalten
                WebResponse response = request.GetResponse();
                MessageBox.Show("Response hat funktioniert");
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.ToString());
            }


            //Neuer FileStream erstellen für die Datei
            FileStream fs = new FileStream("C://Beispiele/MyFile.txt", FileMode.Open);
            byte[] fileContents = new byte[fs.Length];
            fs.Read(fileContents, 0, Convert.ToInt32(fs.Length));
            fs.Flush();
            fs.Close();

            //Ein neuen Stream für den Request erstellen dem der FileStream mitgegeben wird.
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContents, 0, fileContents.Length);
            requestStream.Close();

            //Verbindung abbschliessen
            request.Abort();              
}

/*
 * Die Datei ist nun auch lokal gespeichert
 *und muss dort wieder gelöscht werden.
 */
Abgelegt unter Upload, Ftp, FtpWebRequest.

7 Kommentare zum Snippet

xpr0keksx schrieb am 04.07.2009:
Was muss man da als using noch angeben? so klappt es nicht
Jan Welker schrieb am 04.07.2009:
Hallo,

using System.Net;
using System.IO;


werden benötigt.

Jan
Holger schrieb am 13.01.2010:
Hallo habe Probleme mit der URI bekomme immer wieder gesagt URI ist für diesen Befehl ungültig aber eigentlich müsste Sie passen! Bsp.:ftp://www.freenet.de
Klemens Nanni schrieb am 30.03.2010:
Hier eine Methode, die um einiges kürzer ist:
{
string dateipfad = "C:\\Pfad\Datei.*";
string FTP = "ftp://domain.*/Datei.*";
string FTPuser = "deinBenutzer";
string FTPpasswort = "deinPasswort";

My.Computer.Network.UploadFile(dateipfad, FTP, FTPuser, FTPpasswort);
}
Jan Leimbach schrieb am 19.06.2010:
@Klemens

Nett gemeint, aber die "My" Namespace steht nur unter Visual Basic.NET zur Verfügung.
Keks1911 schrieb am 21.06.2010:
@Jan: du bekommst die Network-Klasse auch unter C# aus dem Namespace Microsoft.VisualBasic.Devices in Microsoft.VisualBasic.dll
DimpiM schrieb am 16.02.2011:
Der Code funktioniert so nicht, VisualStudio bringt den Fehler:
Der Remoteserver hat einen Fehler zurückgegeben: (550) Datei nicht verfügbar (z.B. nicht gefunden oder kein Zugriff).

Den Fehler kann man beheben, wenn man den FtpWebRequest etwas anders erstellt.
Man muss sollte ihn so erstellen:

String strFilename = "File.txt";
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.meinftp.ch/"+strFilename);
 

Logge dich ein, um hier zu kommentieren!