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]

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

C# Komplett

Sie kennen sich in objektorientierter Programmierung aus. Sie schreiben C++ oder Java? Und nun stehen Sie vor der Aufgabe, in C# Anwendungen zu erstellen. Das C# Komplett-Seminar verschafft Ihnen umfassende Programmierkenntnisse in dieser Sprache. Nach der Schulung entwickeln Sie selbständig Anwendungen mit C#. Sie kennen die Datentypen und Klassenbibliotheken der objektorientierten Programmiersprache C#. Der Komplettkurs setzt bei den Grundlagen von C# ein. Sie arbeiten mit Variablen und konvertieren Typen. Multithreading, Delegates, Generics sind nach dem Seminar für Sie kein Geheimnis mehr.

        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!