![]() |
D5 + Indy 9 + ZLib 1.2.3 + PHP5: Komprimierte Daten senden
Ich möchte mit Delphi 5 Pro und der ZLib 1.2.3 eine größere Menge ASCII-Text (XML) komprimieren, per Indy 9 TIdHTTP an einen Apache Webserver mit PHP5 senden und dort wieder entpacken.
Derzeit bekomme ich die Daten mit Delphi und ZLib komprimiert, per Indy übertragen und mit PHP empfangen ($_POST). Nur mit der Dekomprimierung mittels PHP hapert es. Ich bekomme z.B. bei gzinflate eine "data error" Fehlermeldung. Vermutlich wird irgendwo auf dem Weg vom Delphi-Programm zum PHP die Datenmenge verändert (Binärzeichen zu irgendwelchem Punycode konvertiert o.Ä.) oder die ZLib 1.2.3 für Delphi ist nicht kompatibel mit dem was die gz-Funktionen vom PHP verarbeiten können. Ich würde auch gern mal versuchen die komprimierte Datenmenge als Datei zu übertragen doch ich habe keine Ahnung, wie man mit Indy HTTP Client eine Datei so per POST überträgt daß sie anschließend in der $_FILES-Variable vom PHP5 landet. Hat hier schon mal jemand was Ähnliches versucht und es hinbekommen? |
Re: D5 + Indy 9 + ZLib 1.2.3 + PHP5: Komprimierte Daten send
Danke hat sich schon erledigt. Meine Vermutung war richtig. Irgendwo auf dem Weg zum PHP wurde der komprimierte Datenstrom zerhackt. Ich habe im PHP den Inhalt der betreffenden POST-Variable durch die stripslashes-Funktion geschickt und das was da raus kam konnte gzuncompress ohne Probleme verarbeiten.
|
Re: D5 + Indy 9 + ZLib 1.2.3 + PHP5: Komprimierte Daten send
Zitat:
![]() |
Re: D5 + Indy 9 + ZLib 1.2.3 + PHP5: Komprimierte Daten send
Hmm danke das hilft mir schon mal weiter. Kennst zu zufällig eine Möglichkeit, wie man eine Datenmenge die in Stream-Form vorliegt an den TIdMultiPartFormDataStream übergeben kann als File? Damit man nicht den Umweg über eine temporäre Datei gehen muss meine ich.
|
Re: D5 + Indy 9 + ZLib 1.2.3 + PHP5: Komprimierte Daten send
du mußt die zeile
Delphi-Quellcode:
durch
DataStream.AddFile(fieldname, filename, 'application/octet-stream');
Delphi-Quellcode:
ersetzen, wobei FS ein TFileStream-Objekt ist.
DataStream.AddObject(fieldname, 'application/octet-stream', FS, ExtractFilename(filename));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 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