Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi [IdFtp, IndyFTP] Download fortsetzen funtzt einfach nicht! (https://www.delphipraxis.net/82779-%5Bidftp-indyftp%5D-download-fortsetzen-funtzt-einfach-nicht.html)

white-desert 19. Dez 2006 07:10


[IdFtp, IndyFTP] Download fortsetzen funtzt einfach nicht!
 
Hallo,

Ich habe das folgende Problem:

Ich will einen abgebrochenen Download fortsetzen, habe alle
Empfehlungen im Internet ausprobiert - nichts funktioniert! Mein Code:

Delphi-Quellcode:
...
         {------------------------------------------} 
         { Den FileStream fuer den Resume erstellen } 
         {------------------------------------------} 
         if FileExists(Zieldatei) then
         begin
           Fs := TFileStream.Create(Zieldatei, fmOpenReadWrite);
           Fs.Position := Fs.Size;
         end
         else
           Fs := TFileStream.Create(Zieldatei, fmCreate);


         {------------------------------------------} 
         { Ab der gewissen Position anfangen       } 
         {------------------------------------------} 
         Ftp.Get(Quelldatei, Fs, True);
         Ftp.KillDataChannel;
Ich habe auch ohne Filestream, also direkt mit
Code:
Ftp.Get(Quelldatei, Zieldatei, False, True);
versucht, aber es will nicht funktionieren!

Ich wuerde mich sehr freuen, wenn mir jemand helfen koennte!

Meine Indy-Version: 10.0.2151.25345 [<-- Vielleicht liegt es an der
Indy-Version???]

Meine Programmierumgebung: Borland Developer Studio 2006

Danke im Voraus!

white-desert 19. Dez 2006 09:05

Nachtrag: [IdFtp, IndyFTP] Download fortsetzen ...
 
... und der Server unterstuetzt 100%ig Resumes, weil die Property CanResume True ist und mit SmartFTP der Resume einwandfrei geht. :wall:

marabu 19. Dez 2006 09:08

Re: [IdFtp, IndyFTP] Download fortsetzen funtzt einfach nich
 
Herzlich willkommen in der Delphi-PRAXiS, white-desert.

Ich habe zum Testen D7, Indy9 und Sambar63 verwendet - und es funktioniert!

Delphi-Quellcode:
function Download(const url: String; fnLocal: TFileName): Boolean;
var
  fs: TStream;
  s: TStrings;
  ftp: TIdFTP;
begin
  s := TStringList.Create;
  if CrackUrl(url, s) and (AnsiIndexText(s.Values['scheme'], ['ftp', '']) >= 0) then
  begin
    ftp := TIdFTP.Create(Application);
    ftp.Host := s.Values['hostname'];
    if ftp.Host = '' then ftp.Host := 'localhost';
    ftp.Username := s.Values['username'];
    if ftp.Username = '' then ftp.Username := 'anonymous';
    ftp.Password := s.Values['password'];
    try
      ftp.Connect;
      if FileExists(fnLocal)
        then fs := TFileStream.Create(fnLocal, fmOpenReadWrite or fmShareDenyWrite)
        else fs := TFileStream.Create(fnLocal, fmCreate);
      if ftp.ResumeSupported then
        fs.Position := fs.Size;
      try
        ftp.Get(s.Values['urlpath'], fs, fs.Position > 0);
        Result := True;
      finally
        fs.Free;
      end;
      ftp.Disconnect;
    except
      Result := False;
    end;
  end else Result := False;
  s.Free;
end;

// Getestet habe ich so:

procedure TDemoForm.DownloadButtonClick(Sender: TObject);
const
  fn = 'c:\temp\demo.uxp';
  url = 'ftp://localhost/demo.uxp';
begin
  if FileExists(fn) then
    with TFileStream.Create(fn, fmOpenReadWrite or fmShareDenyWrite) do
    begin
      Size := Size shr 1;
      ShowMessage(Format('size before download: %d', [Size]));
      Free;
    end;

  if Download(url, fn) then
    with TFileStream.Create(fn, fmOpenRead or fmShareDenyNone) do
    begin
      ShowMessage(Format('size after download: %d', [Size]));
      Free;
    end;
end;
Vielleicht findest du deinen Fehler durch einen Vergleich mit meinem Code? CrackUrl()

Freundliche Grüße vom marabu

white-desert 19. Dez 2006 09:26

Re: [IdFtp, IndyFTP] Download fortsetzen funtzt einfach nich
 
Danke fuer deine Antwort und Muehe, ich habe meinen Quellcode an deinen angepasst: es geht immer noch nicht! Das liegt dann wohl an der Indy-Version (siehe oben). Oder hat jemand andere Erfahrungen gemacht?

Klaus01 19. Dez 2006 09:53

Re: [IdFtp, IndyFTP] Download fortsetzen funtzt einfach nich
 
Vielleicht liegt es auch am FTP Server, das er dieses nicht unterstützt.

Grüße
Klaus

Andidreas 19. Dez 2006 10:17

Re: [IdFtp, IndyFTP] Download fortsetzen funtzt einfach nich
 
hmm kann schon sein das es an denn 10er indys liegt, die haben bei manchen schon so komische
probleme verursacht!!!

könntest du bei der installation nicht auswählen welche indys du nehmen willst???

marabu 19. Dez 2006 11:14

Re: [IdFtp, IndyFTP] Download fortsetzen funtzt einfach nich
 
Ich mag nicht glauben, dass Indy10 hier schuld an den Problemen ist. Die meisten Probleme mit den Indy10-Komponenten dürften ohnehin dadurch verursacht werden, dass - wie so oft schon in diesem Projekt - ein paar Dinge über den Haufen geworfen oder anders implementiert wurden - Stichwort Abwärts-Kompatibilität. Zum Für und Wider dieser Praxis meine ich auch schon Aussagen vom Project Team gelesen zu haben.

Ich würde die Code-Zeilen im internen Debugger abarbeiten und schauen wo im Detail es klemmt.

Freundliche Grüße

white-desert 20. Dez 2006 06:16

Re: [IdFtp, IndyFTP] Download fortsetzen funtzt einfach nich
 
Zitat:

Zitat von marabu
Ich würde die Code-Zeilen im internen Debugger abarbeiten und schauen wo im Detail es klemmt.

Indy Ftp downloaded einfach die ganze Datei und ueberschreibt lokal die bereits vorhandene, was ich ja nicht will. Ich moechte doch, dass der Download fortgesetzt wird.
Zitat:

Zitat von marabu
die Code-Zeilen

Mein Code funktioniert wie gesagt, so, wie ich es nicht moechte.
oder meinst du, dass ich den IdFTP-Code anschauen soll?
Zitat:

Datei IdFTP.pas nicht gefunden ...
sagt mir Borldand Developer Studio. Was soll ich tun?

marabu 20. Dez 2006 08:47

Re: [IdFtp, IndyFTP] Download fortsetzen funtzt einfach nich
 
Hallo,

kannst du ein kleines Demo-Projekt basteln? Ich würde es dann unter meinen Bedingungen (D7, Indy9) zum Laufen bringen. Dabei erkenne ich vielleicht, ob es an deinem Code liegt oder an etwas anderem.

Freundliche Grüße

Astronaut 25. Feb 2007 13:22

Re: [IdFtp, IndyFTP] Download fortsetzen funtzt einfach nich
 
Hallo,
ich habe derzeit das gleiche Problem, und kann die Erfahrung mit Indy 10 nur bestätigten, ein Fortsetzen geht nicht.
Das Problem scheint zu sein, das die get-Routine immer ein FTP Befehl "REST 0" for dem "RETR filename" zum Server sendet und damit immer von Anfang an geladen wird. Die Tatsächliche Positionsangabe im Sourcefile wird warum auch immer ignoriert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 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