![]() |
IdHttp - defekte Zeilenumbrüche (0A statt 0D0A) bei Text
Moin !
Ich lade Dateien mit IdHTTP von einem Server. Der Code sieht im Prinzip so aus:
Delphi-Quellcode:
Das funzt auch ganz gut soweit. Die Dateien werden in Blöcken geladen.
lStream := TFileStream.Create(TargetFolder + Filename, fmCreate or fmShareDenyNone);
lStream.Position := 0; repeat // Damit sich das Programm nicht aufhängt Application.ProcessMessages; //Hier wird gebrüft ob die restlichen Bytes größer sind als cFileSplitSize if (BytesInsgesamt-BytesKopiert) > cFileSplitSize then //Hier wird einmal die cFileSplitSize eingestellt IdHttp.Request.Range := Format('%d-%d', [BytesKopiert, (BytesKopiert+cFileSplitSize-1)]) else IdHttp.Request.Range := Format('%d-' , [BytesKopiert]); Application.ProcessMessages; //Den eingesttelten Teil herunterladen und ihn die Datei speichern IdHTTP.Get(FileToLoad , lStream); BytesKopiert := BytesKopiert+cFileSplitSize; Application.ProcessMessages; until (BytesKopiert >= BytesInsgesamt); //Schleife beenden wenn datei fertig if Assigned(lStream) then lStream.Free; //FileStream freigeben wenn gesetzt Nun habe ich aber z.B. bei Textdateien das Problem das die Zeilenumbrüche nicht 0D0A sind sondern auf 0A gestutzt werden. Andere Dateien hingegen werden allerdings problemlos geladen. Wenn ich z.B. eine EXE übertrage ist alles ok. Nun stellt sich mir die Frage ... Liegt das an TFileStream oder an IdHTTP? Und was kann ich dagegen tun? Muss ich ggf. beim Stream Create einen zusätzlichen Parameter angeben? Braucht IdHttp evtl. eine spezielle Einstellung? Im Grunde will ich ja nur Dateien als Binärstream downloaden. @Mod: Sollte das eher an IdHTTP liegen, bitte ins Internet Forum verschieben - Sorry. |
Re: TFileStream - defekte Zeilenumbrüche (0A statt 0D0A)
Ist die Textdatei von Dir, also waren vorher CRLF drin? Glaube Unix/Linux Textdateien verwenden nur LF (0A) beim Zeilenumbruch.
|
Re: TFileStream - defekte Zeilenumbrüche (0A statt 0D0A)
Jep, die Textdatei is von mir. Und da ist alles mit 0D0A.
Ich glaube aber fast eher das es an IdHTTP liegt ... Kann es wohl sein das ich den ContentType angeben muss ? |
Re: TFileStream - defekte Zeilenumbrüche (0A statt 0D0A)
Und beim Mac nur OD
|
Re: TFileStream - defekte Zeilenumbrüche (0A statt 0D0A)
Evtl. vergurkt es der Server. Verpass der Datei mal eine andere Endung (z.B. ".bin") und probiere die herunterzuladen.
MfG, Bug |
Re: TFileStream - defekte Zeilenumbrüche (0A statt 0D0A)
Moin !
Mit .BIN am Ende fehlen auch die 0D's. Merkwürdig ist aber wenn ich es im Browser aufrufe stimmt alles: ![]() Also kann es ja eigentlich nicht am Server liegen. |
Re: TFileStream - defekte Zeilenumbrüche (0A statt 0D0A)
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
MfG, Bug |
Re: TFileStream - defekte Zeilenumbrüche (0A statt 0D0A)
Moin !
Sowohl im IE8, Firefox und Download / Anzeigen per FTP habe ich normale Umbrüche (0D0A). So ein Mist ... Kann doch nich angehen das der Server an den Daten rumfummelt. Das wäre ja ein Unding. Ich denke doch eher das es an IdHTTP liegt und das dort die codierung irgendwie falsch ist. Aber ich weiss leider nicht ob dem so ist und was ich wenn anpassen müsste :pale: |
DP-Maintenance
Dieses Thema wurde von "mkinzler" von "Sonstige Fragen zu Delphi" nach "Internet / LAN / ASP.NET" verschoben.
Passt hier besser |
Re: TFileStream - defekte Zeilenumbrüche (0A statt 0D0A)
@mkinzler: Danke.
Ich glaube auch fast das es hier besser aufgehoben ist. |
Re: IdHttp - defekte Zeilenumbrüche (0A statt 0D0A) bei Text
Moin !
Es hilft auch nix wenn ich anstatt von TFileStream einen TMemoryStream nutze und denn dann mittels SaveToFile auf Platte schreibe. Das Ergebnis ist das gleiche - die 0D fehlen :evil: Ich vermute doch ziemlich stark das es an der IdHTTP Komponente liegt bzw. einem fehlenden Parameter. :gruebel: |
Re: IdHttp - defekte Zeilenumbrüche (0A statt 0D0A) bei Text
Hi,
Wenn ich mich nicht irre (was durchaus sein kann), dann liegt es am Server oder/und an FTP. Wenn auf dem Server ein Unix Betriebssystem installiert ist, dann werden in allen Textdateien (bzw alle nicht-Binärdateien) die Zeilenumbrüche "konvertiert". Das ist meines Wissens ganz normal. Ich gehe davon aus, dass die aktuellen Browser damit klar kommen. Aber durch pures herunterladen dieser Textdateien mit HTTP bekommst du die Dateien genau so wie sie auf dem Server gespeichert sind: Mit Unix-Zeilenumbrüchen. Problem kannst du entweder beheben, indem du die Datei mit einer FTP Komponente runterlädst (denk ich mal) oder du lässt ein einfaches StringReplace auf die Textdatei los nachdem du sie runtergeladen hast. Gruß Neutral General |
Re: TFileStream - defekte Zeilenumbrüche (0A statt 0D0A)
Zitat:
Die Datei wird also nur mit 0A als Zeilenumbruch vom Server angeboten. |
Re: TFileStream - defekte Zeilenumbrüche (0A statt 0D0A)
Zitat:
|
Re: TFileStream - defekte Zeilenumbrüche (0A statt 0D0A)
Erster :tongue: :
Zitat:
Zitat:
MfG, Bug |
Re: IdHttp - defekte Zeilenumbrüche (0A statt 0D0A) bei Text
War ja schon spät :oops:
Auf jeden Fall seltsam, das selbst eine umbenannte Datei (er sagt ja, er hat sie selbst als *.bin hoch geladen), von 0D0A nach 0A Umbrüche gewandelt wird. Um die eigene Procedure zu Testen (die wohl funktioniert), würde ich mal Server und Text-Datei ändern (sollte was in dem riesigen Internet zu finden sein). |
Re: IdHttp - defekte Zeilenumbrüche (0A statt 0D0A) bei Text
Moin Männers,
ich werde mal ne Mail an meinen Hoster schicken. Mal sehen was die zu der Sache sagen. Hätte auch schon ne passabele Lösung ... Ich lege alle Dateien gezippt ab. Dadurch würde sich auch der Downloadtraffic reduzieren. |
Re: IdHttp - defekte Zeilenumbrüche (0A statt 0D0A) bei Text
Hallo,
mit
Delphi-Quellcode:
und
procedure TForm1.Button1Click(Sender: TObject);
Var fs : TFileStream; begin fs := TFileStream.Create('c:\About.xxx',fmCreate ); idhttp1.Get('http://www.logview.info/Update/LogView%20V2/i_about.txt',fs); fs.Free; end;
Delphi-Quellcode:
erhalte ich die Datei mit 0D0A. Indyversion: Die mit Delphi 7 geliefert 9.
object IdHTTP1: TIdHTTP
MaxLineAction = maException ReadTimeout = 0 AllowCookies = True ProxyParams.BasicAuthentication = False ProxyParams.ProxyPort = 0 Request.ContentLength = -1 Request.ContentRangeEnd = 0 Request.ContentRangeStart = 0 Request.ContentType = 'text/html' Request.Accept = 'text/html, */*' Request.BasicAuthentication = False Request.UserAgent = 'Mozilla/3.0 (compatible; Indy Library)' HTTPOptions = [hoForceEncodeParams] Left = 328 Top = 96 end Den Browsern ist der Zeilenumbruch schnuppe (da er für die Darstellung nicht benötigt wird). Für den Download dürfte die Dateiendung irrelevant sein, sie hat unter Unix keinerlei Bedeutung. Eventuell ist da die Benutzung eines entsprechenden Contenttypes eher zielführend. |
Re: IdHttp - defekte Zeilenumbrüche (0A statt 0D0A) bei Text
Moins !
So ich habe Post bekommen vom Hoster :) Das Problem liegt am FTP Upload (wie hier schon vermutet wurde). Im ASCII Mode passt der einfach mal die Dateien an. So ein Muff. Nuja, ich habe jetzt die Dateien Binär übertragen und das problem ist weg. Die Alternative ist nach wie vor, alle Dateien zu zippen. Aber das ist dann eine neue Baustelle. Im Moment komme ich sehr gut mit dem Binär Transfer klar. Muss man eben nur wissen das ... :cyclops: @nahpets: Zitat:
|
Re: IdHttp - defekte Zeilenumbrüche (0A statt 0D0A) bei Text
Zitat:
wenn Ascii Daten zwischen der Windows und der Unix/Linux Welt ausgetauscht werden. Bei dem Download via HTTP ist mir so ein Verhalten nicht bekannt. Grüße Klaus |
Re: TFileStream - defekte Zeilenumbrüche (0A statt 0D0A)
Zitat:
Unix verwendet nicht nur LF-Only als Zeilenumbruch, es richtet sich auch üblicherweise nicht nach Extensions, um den Typ zu erkennen, sondern bestimmt ihn nach dem Inhalt selbst - daher nützt das Umbenennen in .BIN bei echten Unixsystemen nichts, die halten das trotzdem für Text. Es gibt aber auch Editoren, die das richtig einlesen, so weit ich mich erinnern kann gehört auch das mitgelieferte WordPad dazu; sowas verwende ich eben für Unix-Texte, ist am einfachsten. Gruss Reinhard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 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