![]() |
FTP Indy Datei runterladen
Hallo!
Ich greife mit Indy auf einen Ftp Server zu und möchte dort, wenn die bestimmte Datei(sie ist definiert) auf dem Server ist, sie auf dem Computer speichern(am besten in den gleichen Ordner wie die spätere .exe ist). Mit welchen Befehlen ist das möglich? |
Re: FTP Indy Datei runterladen
hi,
also die indy demo für ftp ist sehr hilfreich, aber hier der befehl
Delphi-Quellcode:
MfG
IdFTP.Get('dateiname auf server', 'dateiname lokal');
|
Re: FTP Indy Datei runterladen
Hi Xenonz,
die Frage hast du gestern schonmal gestellt und du hast sogar eine ![]() Freundliche Grüße vom marabu |
Re: FTP Indy Datei runterladen
Ach Mist!
Tut mir Leid Marabu! Ja der Code war mir irgendwie nicht verständlich... sry Aber jetzt noch die Frage wie man überprüfen kann, ob die Datei auf dem FTP ist. |
Re: FTP Indy Datei runterladen
Vielleicht hilft dir das hier:
Delphi-Quellcode:
Die Verbindung muss in diesem Fall schon aufgebaut sein.
function FTPFileExists(ftp: TIdFTP; fileName: string): boolean;
begin Result := ftp.Size(fileName) <> -1; end; Wenn du mit irgendwas nicht klar kommst, dann musst du fragen. Es sind bestimmt genug Leute hier, die dir den Code erklären können. marabu |
Re: FTP Indy Datei runterladen
Ah! :-D
Das is ne coole Lösung! Yo damit is das Problem gelöst. Danke marabu! |
Re: FTP Indy Datei runterladen
hmm...
Ich habe es damit probiert: Wenn die Datei nicht auf dem FTP ist, gibt es keine Fehlermeldung. Aber wenn die Datei dort ist läd er die Datei trotzdem nicht herunter. Das heißt der Boolean wert ist immer auf 1... |
Re: FTP Indy Datei runterladen
Kannst du den Code zeigen, der nicht funktioniert?
marabu |
Re: FTP Indy Datei runterladen
Delphi-Quellcode:
selbstverständlich connectet er davor noch auf den ftp. Eine Datei herunter zuladen funktioniert auch also kann es nicht an der verbindung lieden. Mit dem Code oben habe ich getestet ob es funktioniert.
if idftp1.Size('test.txt') <> 0 then label1.Caption:='true'
else label1.Caption:='false'; |
Re: FTP Indy Datei runterladen
Bei der Anpassung des Codes an deine Bedürfnisse hast du einen Fehler gemacht - Size() liefert -1 wenn die Datei nicht existiert.
marabu |
Re: FTP Indy Datei runterladen
mist da hab ich mich vertan...
Ne ich hatte zuerst -1 und habe es danach noch einmal mit 0 probiert. Aber auch mit -1 hat es nicht funktioniert... |
Re: FTP Indy Datei runterladen
Aber label1 zeigt 'True', wenn die Datei existiert?
Dann zeig auch noch den Code, mit dem du den download machst. marabu |
Re: FTP Indy Datei runterladen
Das Problem ist, dass wenn dort -1 steht trotzdem immer false ausgegeben wird. Teste es doch einmal aus
|
Re: FTP Indy Datei runterladen
Ich hatte getestet, bevor ich dir den Code gegeben habe.
Wie sieht der Dateiname aus, den du herunter laden willst? marabu |
Re: FTP Indy Datei runterladen
Na die test.txt
|
Re: FTP Indy Datei runterladen
Sorry, habe ich übersehen.
Nimm den Eintrag bei Host aus deiner FTP-Komponente und gib ![]() Gute Nacht vom marabu |
Re: FTP Indy Datei runterladen
Also mein Code sieht so aus:
Delphi-Quellcode:
Die edits habe ich noch nicht verwendet, da ich noch teste. Diese müssen also nicht beachtet werden.
unit ftp;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdFTP; type TForm1 = class(TForm) Button1: TButton; IdFTP1: TIdFTP; Edit1: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Edit3: TEdit; Label4: TLabel; Edit4: TEdit; Edit2: TEdit; Label5: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin IdFTP1.username := 'xxxxx'; IdFTP1.Password := 'xxxxx'; IdFTP1.Host := 'people-ftp.freenet.de' //Wenn ich hier [url]ftp://people-ftp.freenet.de/text.txt[/url] schreibe, kann er //nicht mehr connecten... IdFTP1.Connect; if idftp1.Size('test.txt') <> -1 then label1.Caption:='true' else label1.Caption:='false'; //begin //IdFTP1.Get('test.txt', '1.txt'); //IdFTP1.Delete('test.txt'); //end; idFTP1.Disconnect; end; end. |
Re: FTP Indy Datei runterladen
Hi xenonz,
probiere es mal so:
Delphi-Quellcode:
Grüße vom marabu
procedure TForm1.Button1Click(Sender: TObject);
begin IdFTP1.username := 'xxxxx'; IdFTP1.Password := 'xxxxx'; IdFTP1.Host := 'people-ftp.freenet.de' // url = [url]ftp://people-ftp.freenet.de/text.txt[/url] // scheme = ftp: // host = people-ftp.freenet.de idFTP1.Connect; if idftp1.Size('test.txt') = -1 then label1.Caption := 'FALSE' else begin label1.Caption := 'TRUE'; IdFTP1.Get('test.txt', '1.txt'); IdFTP1.Delete('test.txt'); end; idFTP1.Disconnect; end; |
Re: FTP Indy Datei runterladen
Hallo marabu!
Soll das hier: // url = ![]() // scheme = ftp: // host = people-ftp.freenet.de wirklich als Kommentar sein? Ich probiere es mal ohne die Slashs.. |
Re: FTP Indy Datei runterladen
Bitte nicht probieren.
Ich wollte dir nur andeuten, dass dein Connect scheitern muss, wenn du einen URL als Host einträgst. marabu |
Re: FTP Indy Datei runterladen
Aber dann ist dein Quellcode doch fast das gleiche, wie meiner...
|
Re: FTP Indy Datei runterladen
Mit dem Unterschied, dass dein fast gleicher Code bei dir nicht funktioniert, aber mein fast gleicher Code bei mir schon. Hat sich denn da jetzt etwas geändert?
marabu |
Re: FTP Indy Datei runterladen
ALso ich habe nun deinen Code probiert, aber auf label1 stand immer False egal ob die Datei dort war oder nicht.
Das war bei dem FTP-Server von freenet. Danach teste ich das ganze mal mit einem anderen FTP-Server und siehe da es funktioniert. Das hätte ich früher mal versuchen müssen. Grrrr. Weißt Du woran das liegen könnte marabu? Vielleicht an einer Einstellung bei Freenet? |
Re: FTP Indy Datei runterladen
Das ist gut möglich, kann ich aber nicht ausprobieren. Entweder freenet hat dir mitgeteilt, welche Einstellungen (z.B. Passive) du verwenden musst oder du probierst die Einstellungen zuerst mal mit einem regulären ftp client aus (bei mir filezilla) und übernimmst sie dann in dein Programm. Wenn alle Stricke reißen, dann musst du die Existenzprüfung machen, indem du nur einen kleinen Teil der Datei herunterlädst.
marabu |
Re: FTP Indy Datei runterladen
Das mit dem Freenet FTP habe ich nicht hinbekommen.
Aber das Programm funkioniert einbahnfrei. Herzlichen Dank an marabu! :hello: |
Re: FTP Indy Datei runterladen
wenn ich mich recht erinnere blockiert Freenet den FTP-Befehl SIZE
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz