Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi FTP Download - Fehler in Datei (https://www.delphipraxis.net/136752-ftp-download-fehler-datei.html)

Markus70 7. Jul 2009 12:02


FTP Download - Fehler in Datei
 
Hallo,

ich lade mit diesem Code per IdFTP eine Zip Datei vom Server herunter.

Delphi-Quellcode:
 
  with IdFTP1 do try
    Username := UserIDEdit.Text;
    Password := PasswordEdit.Text;
    Host := FtpServerEdit.Text;
    Connect;
  finally
  end;
  IdFTP1.ChangeDir(EdSrcDir.Text);
  Name := EdSrcFile.Text;
  IdFTP1.TransferType := ftBinary;
  try
    IdFTP1.Get(Name, concat(EdSrc.Text+Name), false, false);
  finally
    IdFTP1.Disconnect;
  end;

Mit BDS2006 funktionierte das auch problemlos.
Jetzt mit Delphi2009 kann ich das erzeugt Zip Archiv nicht mehr lesen.
Es ist auch größer, als die Ursprüngliche Datei!

any ideas?

Danke

mjustin 7. Jul 2009 12:25

Re: FTP Download - Fehler in Datei
 
Zitat:

Zitat von Markus70
Mit BDS2006 funktionierte das auch problemlos.
Jetzt mit Delphi2009 kann ich das erzeugt Zip Archiv nicht mehr lesen.
Es ist auch größer, als die Ursprüngliche Datei!

Ist es die neueste Version (10.5.5) von http://indy.fulgan.com/ZIP ?

Viele Grüße,

Markus70 7. Jul 2009 13:25

Re: FTP Download - Fehler in Datei
 
Ja. ist es.

Markus70 8. Jul 2009 07:55

Re: FTP Download - Fehler in Datei
 
...hat denn keiner eine Idee? :cry:

himitsu 8. Jul 2009 08:50

Re: FTP Download - Fehler in Datei
 
Kann man bei der Komponente den Übertragungsmodus einstellen?
Wenn ja, dann dürfte es da einen Binärmodus geben und diesen sollte man mal ausprobieren.

Markus70 8. Jul 2009 08:57

Re: FTP Download - Fehler in Datei
 
hab ich schon probiert.
egal ob ich TransferType als ftBinary oder ftASCII definiere.
das Ergebnis bleibt das gleiche.

Assertor 8. Jul 2009 08:58

Re: FTP Download - Fehler in Datei
 
Hi,

Zitat:

Zitat von himitsu
Kann man bei der Komponente den Übertragungsmodus einstellen?
Wenn ja, dann dürfte es da einen Binärmodus geben und diesen sollte man mal ausprobieren.

Ja, kann man bei den Indys und macht Markus ja auch schon ;)

Zitat:

Zitat von Markus70
Delphi-Quellcode:
 
...
IdFTP1.TransferType := ftBinary;
...

@Markus: Ich sehe das Problem nicht in der Verwendung der Indy Komponenten. Kannst Du bitte zeitnah die gleiche Datei mit einem anderen FTP Client downloaden und einen Binärvergleich (HexEditor, zur Not auch fc) machen? Die Indy Version in 2009 hast Du ja bereits geupdatet - wobei mir auch in dem Indy Release von D2009 kein solch gravierender Fehler bekannt wäre.

Gibt es möglicherweise ein Problem mit einem Virenscanner, der Rechnerkonfiguration oder dem FTP Server? Funktioniert der Download von einem anderen System aus korrekt? :glaskugel:

Gruß Assertor

himitsu 8. Jul 2009 09:05

Re: FTP Download - Fehler in Datei
 
ups: jetzt hab ich das IdFTP1.TransferType:=ftBinary; auch plötzlich gesehn ... war vorhin aber noch nicht da ... ich schwör's :oops:

also das ist blöd :shock:

im Notfall könntest du vermutlich auch eine andere Komponente nutzen (TIdHTTP oder einfach was wie UrlDownloadToFile)

URL:
ftp://username:password@host/path/file

Markus70 8. Jul 2009 09:14

Re: FTP Download - Fehler in Datei
 
Liste der Anhänge anzeigen (Anzahl: 2)
@Assertor:

das habe ich bereits alles gemacht.
Ich kann die Datei sowohl mit irgendeinem anderen Client, auch mit meinen alten Routinen aus BDS2006 fehlerfrei herunterladen.
Von daher können wir "eigentlich" alle anderen Fehlerquellen außer Indy ausschliessen.

Ich habe Dir mal von beiden Archiven die Anfänge rausgeschnitten, so dass Du sehen kannst, wo der Unterschied ist.

Gruß
Markus

Assertor 8. Jul 2009 09:25

Re: FTP Download - Fehler in Datei
 
Hi,

Zitat:

Zitat von Markus70
Von daher können wir "eigentlich" alle anderen Fehlerquellen außer Indy ausschliessen.

Den Unterschied kann ich jetzt sehen, aber das hilft bei der Fehlersuche nicht.

Könnt Ihr mir einen Testzugang zu dem FTP & der Datei einrichten? Eine Zip-Datei mit irgendwelchen nutzlosen Beispieldaten, die aber bei Dir auf jeden Fall versagt.

Gruß Assertor

Markus70 8. Jul 2009 09:39

Re: FTP Download - Fehler in Datei
 
ich schau mal wie ich das hinbekomme.
Bin ab jetzt aber erstmal weg, von daher wird´s leider bis morgen früh dauern.
Gruß Markus

nahpets 8. Jul 2009 10:08

Re: FTP Download - Fehler in Datei
 
Hallo,

die defekte Datei hat als Zeilenumbruch 0D0A, die korrekte hat nur 0D.
Da modelt "unterwegs" irgendwer 0D grundsätzlich in 0D0A um, auch wenn es nicht angebracht ist.

himitsu 8. Jul 2009 10:09

Re: FTP Download - Fehler in Datei
 
du hättest die ZIP auch als ZIP anhängen können :stupid:

Zitat:

Es ist auch größer, als die Ursprüngliche Datei!
korrektes.zip.txt 4 KB und defektes.zip.txt 2 KB ... soll das jetzt beides die "selbe" Datei sein?
aber jedenfalls ist es hier genau andersrum (vom Namen her)

ansonsten sieht es so aus, als wenn mindestens die "Zeilenumbrüche" zerstört werden,

also aus #13 oder #10 wird #13#10, bzw. andersrum (aus #13#10 und #13 wird #10) ... jenachdem ob die Datei nun größer oder doch kleiner wird.


[edit] och menno

Assertor 8. Jul 2009 10:09

Re: FTP Download - Fehler in Datei
 
Hi,

Zitat:

Zitat von nahpets
Hallo,

die defekte Datei hat als Zeilenumbruch 0D0A, die korrekte hat nur 0D.
Da modelt "unterwegs" irgendwer 0D grundsätzlich in 0D0A um, auch wenn es nicht angebracht ist.

Du bist schneller. Hab ich auch gerade gesehen, an Offset 168 z.B. Sieht für mich daher so aus, als wenn der Transfer doch nicht Binary ist.

Gruß Assertor

Assertor 8. Jul 2009 11:44

Re: FTP Download - Fehler in Datei
 
Hi,

ich habe gerade mal die Datei "korrektes.zip.txt" auf einen meiner FTP Server geladen und ein leeres Testprojekt erstellt.

IdFTP auf die Form gezogen und einem Butten den folgenden Code zugewiesen:
Delphi-Quellcode:
IdFTP1.Host := '{mein host}';
IdFTP1.Connect;
IdFTP1.TransferType := ftBinary;
IdFTP1.Get('korrektes.zip.txt', 'test.txt');
Die heruntergeladene Datei ist zu 100% identisch mit der Datei auf dem Server, dies habe ich per Binärvergleich geprüft (z.B. fc).

Zitat:

Zitat von Markus70
Von daher können wir "eigentlich" alle anderen Fehlerquellen außer Indy ausschliessen.

Das würde ich ausschließen. Der einfache FTP Transfer ist Basisfunktionlität und wird hundertausendfach verwendet, das wäre sicher schon aufgefallen.

Ich würde eher tippen, es liegt am FTP Server - dieser ist wahrscheinlich falsch konfiguriert und übertragt die Datei als Ascii. Alles was ein Client in der Regel von einem Server verlangt, hier der Transfertype, ist als Bitte an den Server zu betrachten. Dieser kann er folgen, muß es aber nicht.

Gruß Assertor

Markus70 9. Jul 2009 08:29

Re: FTP Download - Fehler in Datei
 
Hi,

es ist mir ja fast ein wenig peinlich, :oops:
aber es gab da tatsächlich noch eine kleine Codezeile die den TransferType immer wieder auf ftASCII zurückgesetzt hat. :mrgreen:

nochmals Danke und Gruß
Markus

Assertor 9. Jul 2009 08:30

Re: FTP Download - Fehler in Datei
 
Hi Markus,

Zitat:

Zitat von Markus70
es ist mir ja fast ein wenig peinlich, :oops:
aber es gab da tatsächlich noch eine kleine Codezeile die den TransferType immer wieder auf ftASCII zurückgesetzt hat. :mrgreen:

Macht ja nichts, Hauptsache wir konnten helfen und der Fehler ist behoben (und es lag nicht an Indy :mrgreen:).

Gruß Assertor

H3llsing 24. Jun 2010 10:00

AW: FTP Download - Fehler in Datei
 
morgen,

ich habe Exakt das gleiche Problem.
Allerdings wird es wohl bei mir am FTP Server liegen.
ich habe den Vorschlag von Assertor grade ausprobiert und die Korrekte Zip auf einen eigenen FTP geschoben, dort wird sie korrekt heruntergeladen.

Aber leider nicht mit den Indys von dem Ursprungsserver.
Filezilla lädt die ZIP auch vom Ursprungsserver Korrekt herunter!

Frage: kann man mit den Indys einen FTBinary am Server erzwingen? Oder was macht Filezilla anders?
Delphi-Quellcode:
ftp1.TransferType := ftBinary;
ist mir bekannt und wird auch nicht auf Ascii umgeschrieben ;)


GELÖST


nun hab ichs gefunden :D
die property "UseExtensionDataPort" musste auf True gesetzt werden, damits auch bei diesem FTP klappt =)


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