Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1562 | Anzahl registrierter User: 1893 | Besucher online: 34
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Datei auf einen Ftp uploaden


Autor: Silke Muehlemann
Sprache: C#
Bewertung:
8.38 (3 votes)
Anzahl der Aufrufe: 32405
  
Kick it on dotnet-kicks.de  

Beschreibung:

Mithilfe der Klasse FtpWebRequest eine lokale Datei auf einen Ftp Server abspeichern.

Abgelegt unter: Upload, Ftp, FtpWebRequest.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
        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.
 */
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

xpr0keksx schrieb am:  04.07.2009 17:45:21

Was muss man da als using noch angeben? so klappt es nicht
Jan Welker schrieb am:  04.07.2009 17:48:29

Hallo,

using System.Net;
using System.IO;


werden benötigt.

Jan
Holger schrieb am:  13.01.2010 16:50:24

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 16:00:22

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 13:27:41

@Klemens

Nett gemeint, aber die "My" Namespace steht nur unter Visual Basic.NET zur Verfügung.
Keks1911 schrieb am:  21.06.2010 07:24:51

@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 22:41:00

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);


schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.