Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi FTP Indy Datei runterladen (https://www.delphipraxis.net/53889-ftp-indy-datei-runterladen.html)

Xenonz 24. Sep 2005 17:47


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?

n0b0dy 24. Sep 2005 18:18

Re: FTP Indy Datei runterladen
 
hi,

also die indy demo für ftp ist sehr hilfreich, aber hier der befehl

Delphi-Quellcode:
  IdFTP.Get('dateiname auf server', 'dateiname lokal');
MfG

marabu 24. Sep 2005 18:23

Re: FTP Indy Datei runterladen
 
Hi Xenonz,

die Frage hast du gestern schonmal gestellt und du hast sogar eine Antwort darauf erhalten. Hast du Probleme mit der Umsetzung?

Freundliche Grüße vom marabu

Xenonz 24. Sep 2005 18:30

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.

marabu 24. Sep 2005 19:05

Re: FTP Indy Datei runterladen
 
Vielleicht hilft dir das hier:

Delphi-Quellcode:
function FTPFileExists(ftp: TIdFTP; fileName: string): boolean;
begin
  Result := ftp.Size(fileName) <> -1;
end;
Die Verbindung muss in diesem Fall schon aufgebaut sein.

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

Xenonz 24. Sep 2005 19:10

Re: FTP Indy Datei runterladen
 
Ah! :-D
Das is ne coole Lösung! Yo damit is das Problem gelöst.

Danke marabu!

Xenonz 24. Sep 2005 19:22

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...

marabu 24. Sep 2005 19:52

Re: FTP Indy Datei runterladen
 
Kannst du den Code zeigen, der nicht funktioniert?

marabu

Xenonz 24. Sep 2005 20:09

Re: FTP Indy Datei runterladen
 
Delphi-Quellcode:
if idftp1.Size('test.txt') <> 0 then label1.Caption:='true'
else label1.Caption:='false';
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.

marabu 24. Sep 2005 20:24

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

Xenonz 24. Sep 2005 20:31

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...

marabu 24. Sep 2005 20:40

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

Xenonz 24. Sep 2005 20:46

Re: FTP Indy Datei runterladen
 
Das Problem ist, dass wenn dort -1 steht trotzdem immer false ausgegeben wird. Teste es doch einmal aus

marabu 24. Sep 2005 20:52

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

Xenonz 24. Sep 2005 20:53

Re: FTP Indy Datei runterladen
 
Na die test.txt

marabu 24. Sep 2005 21:16

Re: FTP Indy Datei runterladen
 
Sorry, habe ich übersehen.

Nimm den Eintrag bei Host aus deiner FTP-Komponente und gib ftp://host/test.txt als URL in deinen WebBrowser ein. Wenn er die Datei dort findet und bei der Size() Abfrage trotzdem auf deinem Label1 FALSE ausgegeben wird, dann hast du einen Fehler beim Konfigurieren deiner FTP-Komponente gemacht.

Gute Nacht vom marabu

Xenonz 25. Sep 2005 14:07

Re: FTP Indy Datei runterladen
 
Also mein Code sieht so aus:

Delphi-Quellcode:
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.
Die edits habe ich noch nicht verwendet, da ich noch teste. Diese müssen also nicht beachtet werden.

marabu 25. Sep 2005 14:22

Re: FTP Indy Datei runterladen
 
Hi xenonz,

probiere es mal so:

Delphi-Quellcode:
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;
Grüße vom marabu

Xenonz 25. Sep 2005 14:37

Re: FTP Indy Datei runterladen
 
Hallo marabu!
Soll das hier:
// url = ftp://people-ftp.freenet.de/text.txt
// scheme = ftp:
// host = people-ftp.freenet.de

wirklich als Kommentar sein? Ich probiere es mal ohne die Slashs..

marabu 25. Sep 2005 14:56

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

Xenonz 25. Sep 2005 15:15

Re: FTP Indy Datei runterladen
 
Aber dann ist dein Quellcode doch fast das gleiche, wie meiner...

marabu 25. Sep 2005 15:18

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

Xenonz 25. Sep 2005 15:33

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?

marabu 25. Sep 2005 15:59

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

Xenonz 25. Sep 2005 17:43

Re: FTP Indy Datei runterladen
 
Das mit dem Freenet FTP habe ich nicht hinbekommen.
Aber das Programm funkioniert einbahnfrei.

Herzlichen Dank an marabu! :hello:

Unplugged 27. Sep 2005 10:30

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