Laden...

C# Dateien hochladen auf FTP-Server

Erstellt von Dultus vor 7 Jahren Letzter Beitrag vor 7 Jahren 2.174 Views
D
Dultus Themenstarter:in
5 Beiträge seit 2017
vor 7 Jahren
C# Dateien hochladen auf FTP-Server

Ich würde gerne über meine Programm Dateien hochladen können. Der Download funktioniert bereits. Jedoch habe ich mit dem Upload gewisse Probleme:

private void button1_Click(object sender, EventArgs e)
        {
            //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://dultus@dultus.lima-ftp.de:21");

            //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("NAME", "PASSWORT");

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


            //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();
        }

funktionieren tut's noch nicht.> Fehlermeldung:

(Exception: Zusätzliche Informationen: Der angeforderte URI ist für diesen FTP-Befehl ungültig. ")

Daher frag ich mich auch, ob

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://dultus@dultus.lima-ftp.de:21");

richtig ist.

Wenn mich jemand auf den Fehler hinweisen könnte, würde ich mich sehr freuen!

Einen schönen guten Abend noch soweit und danke!

H
523 Beiträge seit 2008
vor 7 Jahren

Hab's selber noch nie benutzt, aber den Beispielen die google ausspuckt nach zu urteilen musst Du beim Create auch den Dateinamen, der Datei die Du auf dem FTP erstellen willst, angeben:


FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.meinftp.de/datei.txt");

Siehe auch MSDN

16.841 Beiträge seit 2008
vor 7 Jahren

Bitte in Zukunft im passenden Forenbereich posten. Die Auswahl des korrekten Bereichs ist echt keine Raketenwissenschaft.
Ich habs verschoben...

FtpWebRequest unterstützt keine Angabe von Credentials direkt in der URI.
Das muss über die entsprechende Objekt-Eigenschaft mitgegeben werden.

Schau Dir bei der Verwendung von Streams bitte die using()-Direktive an - und verwende sie.
Dafür ist sie da.

D
Dultus Themenstarter:in
5 Beiträge seit 2017
vor 7 Jahren

Ich danke euch!

Ich habs verschoben...){gray}

Das tut mir Leid. Ich hab' mir gerade erst den Account gemacht und bin bei den Themen nicht ganz durchgestiegen.

Ich habe die Zeile zu

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://dultus.lima-ftp.de/MyFile.txt");

geändert und das läuft jetzt einwandfrei.

Danke für die Hilfe!

MfG