Autor Beitrag
estrella1410
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46



BeitragVerfasst: Mo 17.12.07 12:11 
Hallo..

habe folgendes Problem:

Ich möchte gerne ein Programm schreiben welches via ftp sich auf dem Server (mit Unix) anmeldet und dort eine Txt.-Datei abholt und auf meinem lokalen Rechner speichert...habe schon rumprobiert aber irgendwie kommt die nur ller an.

Hier mal mein Code

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
            string filename = "C:/SpaceUnix.txt";
            string username = "xyz";
            string password = "abc";
            string URI = "ftp://servername/Space_Unix.txt";

            NetworkCredential nc = new NetworkCredential(username, password);
            WebRequest req = WebRequest.Create(URI);
            req.Credentials = nc;
            WebResponse resp = req.GetResponse();
            using (FileStream fsb = new FileStream(filename, FileMode.CreateNew))
            {
                BinaryWriter bw = new BinaryWriter(fsb);
                Byte[] read = new Byte[1024];
                int bytes = resp.GetResponseStream().Read(read, 01024);
            }



Kann mir jemand evtl. helfen?

Gruß,

Jessy

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt
Moderiert von user profile iconChristian S.: Topic aus Sonstiges (C# / .NET) verschoben am Mo 17.12.2007 um 21:44
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 17.12.07 22:44 
Hallo!

Du musst die entsprechende Methode setzen, indem Du den WebRequest in einen FtpWebRequest castest, der von der Create-Methode erzeugt wird, sobald eine URL übergibst, die mit "ftp://" anfängt:
ausblenden Chrome-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
  var url := 'ftp://www.eine-domain.de/eineDatei.txt';
  var req := FtpWebRequest(WebRequest.Create(url));
  req.Method := WebRequestMethods.Ftp.DownloadFile;
  req.Credentials := new NetworkCredential(aUsername, aPassword);
  req.UseBinary := true;
    
  using resp := req.GetResponse do
    using respStream := resp.GetResponseStream do
    begin      
      var buffer := new Byte[2048];
      var count : Integer;
      using f := File.Create('e:\eineDatei.txt'do
        repeat
          count := respStream.Read(buffer, 0, buffer.Length);
          if count > 0 then
            f.Write(buffer, 0, count); 
        until count = 0;    
    end;


//edit: Fehler im Code korrigiert

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".


Zuletzt bearbeitet von Christian S. am Do 20.12.07 12:23, insgesamt 2-mal bearbeitet
estrella1410 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46



BeitragVerfasst: Do 20.12.07 12:11 
vorab DANKE für die antwort

also ich habe mal versucht dein beispiel in meinen code umzusetzten aber ich komme kein stück vorran damit...habe auch ehrlich schwierigkeiten das umzusetzen in c# (sooo fit bin ich leider noch nicht da..)

kannst du mir da nochmal nen bsp viell. in c# gebn bzw. tipps welche teile bei mir fehlen/geändert werdn sollten?

Gruß

Jessy
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 20.12.07 12:22 
So unterschiedlich ist das doch gar nicht, in .NET sieht doch eh alles gleich aus ;-)

Mal sehen, ob ich das aus dem Kopf hinbekomme. :gruebel:


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
string url = "ftp://www.eine-domain.de/eineDatei.txt";
FtpWebRequest req = (FtpWebRequest) WebRequest.Create(url);
req.Method = WebRequestMethods.Ftp.DownloadFile;
req.Credentials = new NetworkCredential(aUsername, aPassword);
req.UseBinary = true;
    
using (WebResponse resp = req.GetResponse) //hier bin ich mir bei "WebResponse" nicht sicher, bitte in der Doku nachschlagen
{
  using (Stream respStream = resp.GetResponseStream)
  {   
    Byte[] buffer = new Byte[2048];
    int count;
    using (FileStream f : File.Create(@"e:\eineDatei.txt"))
    {
      do {
        count = respStream.Read(buffer, 0, buffer.Length);
        if (count > 0)
          f.Write(buffer, 0, count);
      } while (count > 0);
   }
}

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
estrella1410 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46



BeitragVerfasst: Do 20.12.07 12:56 
habe es jetzt hinbekommen :) danke schön


dann hab ich au nur noch eine kleine frage...ist die formatierung auch möglich? (habe jez alle informationen in 2 zeilen will aber alles hübsch bündig untereinander)

bin mir grad nich sicher wie das hier geht ... also ich weis dass es in vbs sowas wie "vbCrLf" gibt und in c# auch sowas wie "/r/n"...

hmm
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 20.12.07 12:59 
Ich weiß nicht wirklich, wovon Du redest :gruebel:

Aber es hört sich so an, als wäre es eine neue Frage, und bei denen gilt im Forum: Neue Frage -> Neuer Thread ;-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
estrella1410 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46



BeitragVerfasst: Do 20.12.07 13:28 
gut hab ich gemacht :)