C# OrdnerInhalt auf FTP hochladen

PhilippVP

Cadet 2nd Year
Registriert
Juni 2013
Beiträge
24
Hallo Leute :)

ich brauche dringend eure Hilfe, ich hänge an diesem Problem schon seit Tagen fest und finde einfach keine Lösung dafür :(

Also ich habe einen Ordner, dessen Inhalt auf den FTP hochgeladen werden soll, leider finde ich dazu nichts :(

In meinem bisherigen Code was ich habe lädt er es nur hoch wenn ich eine Datei aus dem Verzeichnnis definiere.


Code:
            string Datei;

            Datei = @"Pfad";

            //Create FTP request
            FtpWebRequest request2 = (FtpWebRequest)FtpWebRequest.Create("FTPPfad" + "/" + Path.GetFileName(Datei));

            request2.Method = WebRequestMethods.Ftp.UploadFile;
            request2.Credentials = new NetworkCredential("name", "passwort");
            request2.UsePassive = true;
            request2.UseBinary = true;
            request2.KeepAlive = false;

            //Load the file
            FileStream stream2 = File.OpenRead(Datei);
            byte[] buffer2 = new byte[stream2.Length];

            stream2.Read(buffer2, 0, buffer2.Length);
            stream2.Close();

            //Upload file
            MessageBox.Show("Starten des Uploades der Datei!");
            Stream reqStream2 = request2.GetRequestStream();
            reqStream2.Write(buffer2, 0, buffer2.Length);
            reqStream2.Close();

            MessageBox.Show("Die bestehende Verbindung wurde getrennt/beendet!");


Könnt Ihr mir da helfen?
Danke schon einmal im Vorraus.


MFG PhilippVP
 
Der folgende Code sollte dir helfen dein Problem zu lösen. Einfach im foreach vom GetFiles() dein Upload machen.

Code:
System.IO.DirectoryInfo ParentDirectory = new System.IO.DirectoryInfo("C:\\Testordner");

foreach (System.IO.FileInfo f in ParentDirectory.GetFiles())
{
  Console.WriteLine("Datei: " + f.Name);
}

foreach (System.IO.DirectoryInfo d in ParentDirectory.GetDirectories())
{
   Console.WriteLine("Ordner: " + d.Name);
}
 
Meint ihr das so? Aber das funzt bei mir nicht :(


Code:
            System.IO.DirectoryInfo ParentDirectory = new System.IO.DirectoryInfo(@"E:\DateienFTP\Bilder");

            foreach (System.IO.FileInfo f in ParentDirectory.GetFiles())
            {
                lbDateien.Items.Add("Datei: " + f.Name);


                //Create FTP request
                FtpWebRequest request2 = (FtpWebRequest)FtpWebRequest.Create("FTPPfad" + "/" + Path.GetFileName(@"E:\DateienFTP\Bilder" + f.Name));

                request2.Method = WebRequestMethods.Ftp.UploadFile;
                request2.Credentials = new NetworkCredential("name", "passwort");
                request2.UsePassive = true;
                request2.UseBinary = true;
                request2.KeepAlive = false;

                //Load the file
                FileStream stream2 = File.OpenRead(f.Name);
                byte[] buffer2 = new byte[stream2.Length];

                stream2.Read(buffer2, 0, buffer2.Length);
                stream2.Close();

                //Upload file
                MessageBox.Show("Starten des Uploades der Datei!");
                Stream reqStream2 = request2.GetRequestStream();
                reqStream2.Write(buffer2, 0, buffer2.Length);
                reqStream2.Close();

                MessageBox.Show("Die bestehende Verbindung wurde getrennt/beendet!");
            }
 
Klappt bei mir so:

Code:
DirectoryInfo ParentDirectory = new DirectoryInfo(@"D:\Ordner\");

foreach (FileInfo f in ParentDirectory.GetFiles())
{
    //Create FTP request
    FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create("ftp://server/ordner/" + f.Name);
    request.Method = WebRequestMethods.Ftp.UploadFile;
    request.Credentials = new NetworkCredential("user", "password");
    request.UsePassive = true;
    request.UseBinary = true;
    request.KeepAlive = false;

    Console.WriteLine("Connection geöffnet");

    //Load the file
    FileStream stream = f.OpenRead();
    byte[] buffer = new byte[stream.Length];

    stream.Read(buffer, 0, buffer.Length);
    stream.Close();

    //Upload file
    Console.WriteLine("Lade Datei " + f.Name + " hoch...");
    Stream reqStream = request.GetRequestStream();
    reqStream.Write(buffer, 0, buffer.Length);
    reqStream.Close();
    Console.WriteLine("Connection geschlossen");
}
 
Zuletzt bearbeitet: (umgebaut)
/e: ... zuwenig gedacht...

beim pfad ein "\" am Ende könnte helfen
 
Zuletzt bearbeitet:
thecain schrieb:
Code:
FtpWebRequest request2 = (FtpWebRequest)FtpWebRequest.Create("FTPPfad" + "/" + Path.GetFileName(@"E:\DateienFTP\Bilder" + f.Name));

f.Name ist schon der FileName

Code:
FtpWebRequest request2 = (FtpWebRequest)FtpWebRequest.Create("FTPPfad" + "/" + f.Name);

Meine Lösung oben Funktioniert.
 
Danke für eure Hilfen das funktioniert soweit, aber das muss in dem Ordner vom Programm liegen aber ich will ja das er das in E:\DateienFTP\Bilder\ liegende nimmt, das ist noch mein Problem.

Hoffe Ihr könnt mir da helfen?
 
PhilippVP schrieb:
Danke für eure Hilfen das funktioniert soweit, aber das muss in dem Ordner vom Programm liegen aber ich will ja das er das in E:\DateienFTP\Bilder\ liegende nimmt, das ist noch mein Problem.

Hoffe Ihr könnt mir da helfen?

Zeig mal dein Code. In meinem Beispiel oben läd er alle Dateien aus dem Ordner "D:\Ordner\" nicht aus dem Programmverzeichnis
 
Danke für eure Hilfe jetzt klappt es bei mir ich habe noch was umgeändert beziehungsweise. übersehen beim kopieren. :)

DANKE!! :) (Y)
 

Ähnliche Themen

Zurück
Oben