![]() |
[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:
Ich habe auch ohne Filestream, also direkt mit
...
{------------------------------------------} { 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;
Code:
versucht, aber es will nicht funktionieren!
Ftp.Get(Quelldatei, Zieldatei, False, True);
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! |
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:
|
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:
Vielleicht findest du deinen Fehler durch einen Vergleich mit meinem Code?
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; ![]() Freundliche Grüße vom marabu |
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?
|
Re: [IdFtp, IndyFTP] Download fortsetzen funtzt einfach nich
Vielleicht liegt es auch am FTP Server, das er dieses nicht unterstützt.
Grüße Klaus |
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??? |
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 |
Re: [IdFtp, IndyFTP] Download fortsetzen funtzt einfach nich
Zitat:
Zitat:
oder meinst du, dass ich den IdFTP-Code anschauen soll? Zitat:
|
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 |
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 12:58 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