Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Übertragung Txt-file an ftp ... denkfehler!!!??? (https://www.delphipraxis.net/18445-uebertragung-txt-file-ftp-denkfehler.html)

cs_ii 18. Mär 2004 19:48


Übertragung Txt-file an ftp ... denkfehler!!!???
 
auch diesmal hoffe ich wieder, dass mir geholfen werden kann. dazu muss ich sagen, dass ich das zum ersten mal mache und demnach sehr wenig ahnung davon habe :(

ich möchte eine txt-datei an einen ftp-server schicken und dachte mir ich mach das über die indykomponente IdFTP.
folgende einstellungen:
auf dem ftp ein ordner, zugriff mit user und passwort... verbindung wird hergestellt, allerdings greift er nicht auf diesen ordner zu. gesendet wird also auch nichts...

außerdem verstehe ich nicht so recht, wann das execute-ereignis des servers ausgelöst wird :gruebel:

diesen quelltext hab ich mir dafür gezogen:

Delphi-Quellcode:
....
  with Idftp1 do
  begin
    fs := TFileStream.Create('c:\trainprog\train.txt', fmOpenRead or fmShareDenyWrite); //Datei in FileStream einlesen
    Connect; //und Verbindung herstellen
    try
      OpenWriteBuffer; //stellt sicher, dass alle Daten versendet werden
      try
        WriteStream(fs, true, true, 0); //das 2. true ist wichtig!, da es bewirkt, dass die Größe des Streams mittels WriteInteger zuerst verschickt wird
        CloseWriteBuffer;
      except
        CancelWriteBuffer;
        raise;
      end;
    finally
      fs.Free;
    end;
  end;
end;
Delphi-Quellcode:
procedure TFormMain.IdFTPServer1Execute(AThread: TIdPeerThread);
var fs                                          : TFileStream;
  SizeOfIncomingStream                          : integer;
begin
  fs := TFileStream.Create('train.txt', fmCreate or fmShareExclusive);
  with AThread.Connection do
    try
      SizeOfIncomingStream := ReadInteger; //Größe des Streams empfangen
      ReadStream(fs, SizeOfIncomingStream); //und übergeben
    finally
      Disconnect;
      fs.Free;
    end;
end;
liebe grüße,
claudia

[edit=Luckie]Delphi-Tags eingefügt. Beim nächsten Mal bitte selber machen. Danke. Mfg, Luckie[/edit]

Meflin 19. Mär 2004 13:35

Re: Übertragung Txt-file an ftp ... denkfehler!!!???
 
also dafür brauchst du den ftp client nicht den server! das server execute ereignis wird dann ausgeführt, wenn du irgendwas vom client aus hinschickst - seis ein stream, string oder sonst was! (afaik)

cs_ii 19. Mär 2004 15:47

Re: Übertragung Txt-file an ftp ... denkfehler!!!???
 
ich habe jeweils die komponente des clients und des servers verwendet...

ich blick leider überhaupt nicht durch, weshalb ich hier dringend hilfe suche!!!

Meflin 19. Mär 2004 18:31

Re: Übertragung Txt-file an ftp ... denkfehler!!!???
 
willst du dich mit einem bestehenden server verbinden, also z.b. deinem webspaceprovider, oder willst du selbst einen ftp server basteln? für ersteren fall, den du warscheinlich brauchst, musst du nur die indy ftp client kompo verwenden!

DataCool 20. Mär 2004 20:35

Re: Übertragung Txt-file an ftp ... denkfehler!!!???
 
Hi,

hier ein kleines Beispiel was alle Deine Fragen beantworten sollte :

Code:
procedure TForm1.cmdGoClick(Sender: TObject);
begin
  // Sicher gehen, das neu connected wird
  IdFTP1.Disconnect;
  // Verbindungsdaten setzen
  IdFTP1.Host := 'www.telwell.de';
  IdFTP1.Passive := false; // = true für passiven FTP-Transfer
  IdFTP1.Username := 'testuser';
  IdFTP1.Password := 'testpwd';
  // Alle Verbindungsdaten vorhanden jetzt versuchen zu verbinden
  try
    IdFTP1.Connect(true,5000); // Es wird 5 Sek. auf die FTP-Verbindung gewartet
    if IdFTP1.Connected then begin
      // sind wir schon im richtigen Verzeichis des Servers ? Hängt von den Userrechten auf dem SErver ab
      // wenn nötig Verzeichnis wechseln
      IdFTP1.ChangeDir('test');
      // Wie soll die Datei übertragen werden ? im AScii Format oder Binear
      // IdFTP1.TransferType := ftASCII; bei Textdateien verwenden
      IdFTP1.TransferType := ftBinary;
      // Datei jetzt hochladen
      IdFtp1.Put('C:\Autoexec.bat','AufDemServer.bat');
      // Eine Datei downloaden mit get !!
    end;
  except
    raise; // Exception warum die Verbing fehlschlug ausgeben
  end;
end;
Außerdem ist noch wichtig, das Du die Komponente IdAntifreeze Komponente aus dem Register Indy-Misc auf die Form setzt, dabei bei längeren Operationen die Form nicht einfriert.

Gruß

Data

cs_ii 21. Mär 2004 10:04

Re: Übertragung Txt-file an ftp ... denkfehler!!!???
 
also erstmal vielen danke für die hilfe...
es funktioniert beinahe... ich komm nun auf den server und auch ins das richtige verzeichnis.

nur die datei wird immer noch nicht übertragen... fehlermeldung "zeitüberschreitung bei verbindung"... da hab ich passive von true auf false gesetzt... dann kam fehlermeldung "STOU, command is not yet implemented"

was soll "stou" sein ??? und was genau läuft nun wieder falsch :?:

liebe grüße, claudia

Basilikum 21. Mär 2004 10:45

Re: Übertragung Txt-file an ftp ... denkfehler!!!???
 
STOU steht für unique-named store, sprich: der Client will eine Datei speichern, der Name soll aber durch den Server festgelegt werden, unter Berücksichtigung, dass es diese Datei noch nicht gibt bzw. keine bestehende überschrieben werden soll... (unique-named: einmaliger Dateiname).

TidFTP verwendet diesen Befehl, anstelle dem normalen STOR, wenn der 2. Parameter von Put() ein leerer String enthält, oder ganz weggelassen wurde..... und dort dürfte auch der Hund begraben liegen...

cs_ii 21. Mär 2004 12:38

Re: Übertragung Txt-file an ftp ... denkfehler!!!???
 
:bounce1:

super... riesen dankeschön an euch... es funktioniert!!! :thuimb:

bis irgendwann mal vielleicht :mrgreen:
bye bye

marc.beeh 23. Mär 2004 14:14

Re: Übertragung Txt-file an ftp ... denkfehler!!!???
 
Ich habe jetzt auch mal den beispiel-Quelltext verwendet. Bei IdFTP1.TransferType := ftBinary; bekomme ich beim compilieren aber immer die Fehlermeldung "Undefinierter Bezeichner: 'ftBinary'"

Woran kann das liegen?

cs_ii 23. Mär 2004 14:25

Re: Übertragung Txt-file an ftp ... denkfehler!!!???
 
diese fehlermeldung kam bei mir auch... aber da ich textdateien versende nehme ich sowieso ftASCII.
du kannst den transfertype auch direkt in der komponente hinterlegen und dann dürfte das problem behoben sein. geht natürlich nur, wenn der transfertype gleich bleibt und du ihn nicht wechseln willst.

liebe grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:53 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz