CwCity Board >>> Programmier Sprachen >>> Kylix, C/C++ etc. >>> [C#] Alle Daten vom Webspace via FTP
[C#] Alle Daten vom Webspace via FTP

Seiten: 1, 2
Verfasst am: 05.09.2011 um: 05:55 Uhr
 

CwID: 87419

Huhu
Gibt es in C# irgendeinen Befehl, mit ich alle Daten vom Webspace via FTP kopieren kann? Oder im Windows (Batch...)?

Ich hatte auch schon überlegt, via php die ganzen URL generieren zu lassen und sie mit c# dann herunterladen.

Bitte um Hilfe



 



csharphelp
Verfasst am: 05.09.2011 um: 08:19 Uhr
 
Cw Aufsteiger
Aufsteiger
CwID: 157701
Beiträge: 37
SPAM:
0% Spam
Hallo,

das ist eigentlich nicht schwer...
Schau dir das an (http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.asp x) dann dürfte dir alles klar sein... wenn du Probleme mit dem angeführen Beispiel im Link hast kann ich dir gerne helfen...

sg



Letzte Änderung am: 05.09.2011 um: 08:20 Uhr durch: csharphelp
 

Verfasst am: 05.09.2011 um: 19:45 Uhr
 

CwID: 87419
Danke für die schnelle Antwort. Leider ist das Ding sehr unübersichtlich und für mich als Anfänger nur schwer zu verstehen. Gibt es denn keien Classe oder dergleichen, die das ganze ein bisschen einfacher machen??
Ich will doch nur die ganzen Daten samt Ordnerstruktur in ein von mir gewähltes verzeichnis auf den pc kopieren =(



 

markush
Verfasst am: 05.09.2011 um: 21:00 Uhr
 
Dr. CwCity.de
Community God
CwID: 27651
Beiträge: 3249
SPAM:
0% Spam
Ich hab mal ein Skript in Linux geschrieben:
www.cwcity.de/tutorials/view/140-Da...

Verwendete Befehle:
curlftpfs: Bildet das Ftp in einem Verzeichnis ab.
rsync: Überträgt Daten inkremental in ein Verzeichnis

Vielleicht gibt es bei c# ähnlich Befehle und du könntest das Prinzip übernehmen.


 

csharphelp
Verfasst am: 06.09.2011 um: 07:56 Uhr
 
Cw Aufsteiger
Aufsteiger
CwID: 157701
Beiträge: 37
SPAM:
0% Spam
Hallo,
also mit der funktion kannst du etwas von dem ftp holen, als Parameter musst du eine Uri übergeben. Diese kannst du so Instanzieren: Uri uri = new Uri("ftp://myUrl");
 
public static bool DisplayFileFromServer(Uri serverUri)
{
    // The serverUri parameter should start with the ftp:// scheme.
    if (serverUri.Scheme != Uri.UriSchemeFtp)
    {
        return false;
    }
    // Get the object used to communicate with the server.
    WebClient request = new WebClient();

    // This example assumes the FTP site uses anonymous logon.
    request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");
    try
    {
        byte [] newFileData = request.DownloadData (serverUri.ToString());
        string fileString = System.Text.Encoding.UTF8.GetString(newFileData);
        Console.WriteLine(fileString); //In der Variable fileString steht nun der Inhalt der runtergeladenen datei. Per streamwriter kannst du diesen string auf der lokalen Festplatte speichern zB
    }
    catch (WebException e)
    {
        Console.WriteLine(e.ToString());
    }
    return true;
}

 Wie man alle Dateien eines FTP auflistet steht auch in dem von mir geposteten link. Alles in einem ist es nicht schwer aber du musst dich eben ein bisschen damit beschäftigen ;)



Letzte Änderung am: 06.09.2011 um: 07:59 Uhr durch: csharphelp
 

Verfasst am: 06.09.2011 um: 20:40 Uhr
 

CwID: 87419

Hab zwar auf der Seite keine Lösung für alle Daten gefunden, aber ich werde das ganze nun Serverseitig lösen und es dann mit split trennen.


 

csharphelp
Verfasst am: 07.09.2011 um: 07:49 Uhr
 
Cw Aufsteiger
Aufsteiger
CwID: 157701
Beiträge: 37
SPAM:
0% Spam
Hallo,

diese Funktion ist etwas weiter unten beim "Community Content" zu finden.
Ist zwar VB.net ist aber in einer minute umgeschrieben.

Public Function GetFileList(ByVal StartsWith As String, ByVal EndsWith As String) As List(Of String)
Dim oFTP As FtpWebRequest = CType(FtpWebRequest.Create(FTPSite & CurrentDirectory), FtpWebRequest)
oFTP.Credentials = New NetworkCredential(UserName, Password)
oFTP.KeepAlive = KeepAlive
oFTP.EnableSsl = UseSSL
If UseSSL Then ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf ValidateServerCertificate)
oFTP.Method = WebRequestMethods.Ftp.ListDirectory
Dim response As FtpWebResponse = CType(oFTP.GetResponse, FtpWebResponse)
Dim sr As StreamReader = New StreamReader(response.GetResponseStream)
Dim str As String = sr.ReadLine
Dim oList As New List(Of String)
While str IsNot Nothing
If str.StartsWith(StartsWith) And str.EndsWith(EndsWith) Then
oList.Add(str)
End If
str = sr.ReadLine


End While



sr.Close()
response.Close()
oFTP = Nothing
Return oList
End Function


sg


 





 

Verfasst am: 07.09.2011 um: 11:49 Uhr
 

CwID: 87419

aso^^ das stand aber nur auf der englischen =( ich hab immer das en-us durch de-at ersetzt^^




Letzte Änderung am: 07.09.2011 um: 11:49 Uhr durch: chrisi200014
 

consider
Verfasst am: 07.09.2011 um: 12:34 Uhr
 
Dr. CwCity.de
Community God
CwID: 157538
Beiträge: 3973
SPAM:
0% Spam
Shellscript/Windowsscript tuts wohl nicht? Und dieses dann per Taskplaner oder bei Linux per Cronjob ausführen? 

ftp -s:Pfad/Scriptdatei.bla serverIP

in der Scriptdatei

user
USERNAME
PASSWORT
mput pfad/ordner/*
bye

-------------

Regeln für gutes Softwaredesign



  1. Wiederverwendung von Code ist besser als Duplizierung.

  2. Daten kapseln.

  3. Immer gegen Schnittstellen, möglichst nicht gegen konkrete Implementierungen programmieren.

  4. Schnittstellen erweiterbar halten.

  5. Keine monolithischen Strukturen.

  6. Vererbung sorgt für starre Strukturen. Objektkompostitionen sind flexibler.

  7. Auf lose Kopplung der Klassen achten. Feste Abhängigkeiten zwischen einzelnen Klassen vermeiden. 


PHP Design Patterns, 2. Auflage von Stefan Schmidt. O'Raily Verlag. ISBN 3-89721-864-2

-----------------
 

Verfasst am: 07.09.2011 um: 12:48 Uhr
 

CwID: 87419

Nein ein Shell-Skript tut es sicher nicht. Denn darin sind die Zugangsdaten für jeden offen. Wenn du das ganze mit C# machst sind diese im Programm verbudelt.



 

 
Seiten: 1, 2

Folgende User sind hier gerade aktiv:
-

ANZEIGE